Android facebook登录按钮定制
使用facebook sdk 4.6.0,我正在尝试在我的android应用程序中使用facebook登录集成。 com.facebook.login.widget.LoginButton显示以下按钮 我想将文本从“使用Facebook登录”更改为“仅使用Facebook” 我尝试了以前提供的几乎所有解决方案,但没有一个对我有效。我能想到的可能原因是,之前回答的所有问题都是针对facebook sdk 3.0的,而facebook sdk 4.6.0似乎失败了 我试过:Android facebook登录按钮定制,android,facebook,facebook-login,Android,Facebook,Facebook Login,使用facebook sdk 4.6.0,我正在尝试在我的android应用程序中使用facebook登录集成。 com.facebook.login.widget.LoginButton显示以下按钮 我想将文本从“使用Facebook登录”更改为“仅使用Facebook” 我尝试了以前提供的几乎所有解决方案,但没有一个对我有效。我能想到的可能原因是,之前回答的所有问题都是针对facebook sdk 3.0的,而facebook sdk 4.6.0似乎失败了 我试过: 正在修改LoginBut
<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 studio右下角的锁定按钮解锁,但什么也没发生。任何关于如何解锁FB SDK文件的建议。我的FB SDK版本是4.6.0请在这里更改facebook SDK的LoginButton.java类的代码
protected void configureButton(
final Context context,
final AttributeSet attrs,
final int defStyleAttr,
final int defStyleRes) {
super.configureButton(context, attrs, defStyleAttr, defStyleRes);
setInternalOnClickListener(new LoginClickListener());
parseLoginButtonAttributes(context, attrs, defStyleAttr, defStyleRes);
if (isInEditMode()) {
// cannot use a drawable in edit mode, so setting the background color instead
// of a background resource.
setBackgroundColor(getResources().getColor(R.color.com_facebook_blue));
// hardcoding in edit mode as getResources().getString() doesn't seem to work in
// IntelliJ
loginText = "Facebook";
} else {
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
setButtonText();
}
};
}
setButtonText();
}
在搜索了很多之后,我发现了最近的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>
我只需要用户的公共档案和电子邮件
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);
}
}
我使用日志查找facebook登录的请求代码是64206 我试过了,但LoginButton.java类被锁定。我不能编辑它。请告诉我如何解锁。转到Facebook sdk java文件夹,打开LoginButton.java类并更改setButtonText();方法。如果尚未找到,请查看此方法
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
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);
}
}