[英]Android Custom Facebook Log In Button
我创建了自定义按钮,该按钮在模拟器中可以正常工作。 但是,它在设备上不起作用:第一次登录,但第二次尝试执行任何操作。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
Button testButton = (Button) findViewById(R.id.test);
testButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
com.facebook.login.widget.LoginButton btn = new LoginButton(MainActivity.this);
btn.setReadPermissions(Arrays.asList(
"public_profile", "email", "user_birthday", "user_friends"));
if (Profile.getCurrentProfile().getCurrentProfile() != null) {
LoginManager.getInstance().logOut();
Button currentButton = (Button) findViewById(v.getId());
currentButton.setText("LOG IN");
} else {
btn.performClick();
Button currentButton = (Button) findViewById(v.getId());
currentButton.setText("LOG OUT");
}
}
});
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest.newMeRequest(
loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject json, GraphResponse response) {
if (response.getError() != null) {
// handle error
Toast.makeText(MainActivity.this, "error", Toast.LENGTH_LONG).show();
} else {
try {
user_name = json.getString("name");
Toast.makeText(getApplicationContext(), user_name, Toast.LENGTH_LONG).show();
System.out.println(user_name);
} catch (JSONException e) {
e.printStackTrace();
}
Intent intent = new Intent(MainActivity.this, SignActivity.class);
intent.putExtra(EXTRA_MESSAGE, user_name);
startActivity(intent);
}
}
}).executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
该应用程序在Facebook配置页面上公开。 标准LoginButton可以正常工作,但是,我需要对其进行自定义,或者至少要更改按钮的形状和颜色。 任何想法如何做到这一点? 先感谢您。
Facebook SDK版本:4.5仿真器/设备API版本:分别为23/21
该错误是由新生成的密钥哈希值引起的。 通过向Facebook应用程序设置中添加新内容(来自堆栈跟踪)解决了该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.