使用facebook sdk 4.6.0我试图在我的Android应用程序中使用facebook登录集成。 com.facebook.login.widget.LoginButton显示以下按钮
我想将文字从“使用Facebook登录”更改为“仅限FACEBOOK”
我已经尝试了之前提供的几乎所有解决方案,但它们都没有为我工作。我能想到的可能原因是所有以前回答的问题都是针对facebook sdk 3.0,这对于facebook sdk 4.6.0来说似乎失败了
我试过了:
修改LoginButton类但它已被锁定
xmlns:facebook =“http://schemas.android.com/apk/res-auto”在LoginButton中使用此架构并使用facbook更改文本:login_text =“LOGIN”, facebook:com_facebook_login_text =“登录”但两个都无法正常工作
这是我对facebook sdk的依赖 编译'com.facebook.android:facebook-android-sdk:4.6.0'
这是我的LoginButton xml
<com.facebook.login.widget.LoginButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonRegisterFacebook"
android:padding="10dp"
/>
请建议一些更改文字和更改fb徽标图片尺寸的方法
编辑:现在我明白为什么以前说过的方法都不适用于我。我的Facebook SDK文件被锁定
我尝试通过点击Android工作室右下角的锁定按钮解锁,但没有任何反应。有关如何解锁FB SDK文件的任何建议。我的FB SDK版本是4.6.0
答案 0 :(得分:0)
请在facebook SDK的LoginButton.java类的代码中更改
function save() {
var data = $('#formId').serialize();
var url = 'test1.php';
$.post(url, data, function (response) {
//----------this is new part------
$.getJSON("test.php", function(result) {
$.each(result, function(i, field) {
$("#reza").append(field.name);
});
});
});
}
答案 1 :(得分:0)
经过大量搜索,我发现最近的Facebook SDK 4.6.0,为了只更改FB登录按钮文本,将其添加到res / values / strings.xml
<string name="com_facebook_loginview_log_out_button">Your Logout Text</string>
<string name="com_facebook_loginview_log_in_button_long">Your Login Text</string>
但是,如果我们想在任何随机按钮中使用FB登录按钮功能
将以下行添加到随机按钮的ClickListener(在我的情况下为'buttonLogin')
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginButton loginButton = new LoginButton(Login.this);
AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
updateWithToken(newAccessToken);
}
};
CallbackManager callbackManager = CallbackManager.Factory.create();
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
loginButton.registerCallback(callbackManager, callback);
loginButton.performClick();
}
我只需要用户公开个人资料和电子邮件
updateWithToken()为
private void updateWithToken( AccessToken currentAccessToken ){
if(currentAccessToken!=null){
Log.v("MyApp", getClass().toString() + "updateWithToken:If(Token NonNull)");
GraphRequest request = GraphRequest.newMeRequest(currentAccessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.v("MyApp",getClass().toString() + response.toString());
// Get facebook data from login
try {
Log.v("MyApp", getClass().toString() + object.toString()); // contains data string
} catch (JSONException e) {
Log.v("MyApp", getClass().toString() + "LoginJSON");
e.printStackTrace();
}
Intent intent = new Intent(Login.this, Home.class); // once data is received i wanted to open Home Activity
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location");
request.setParameters(parameters);
request.executeAsync();
} else {
Log.v("MyApp", getClass().toString() + "updateWithToken:Else(Token Null)");
}
}//updatewithtoken
还将OnActivityResult重写为
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.v("MyApp", getClass().toString() + " Request:" + requestCode + " Result:" + resultCode);
if (requestCode==64206) {
Log.v("MyApp", getClass().toString() + " onActivityResult:If Facebook");
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
我使用日志查找请求代码是64206 for facebook login。