我正在处理这种奇怪的行为,其中在2个不同的活动中使用的相同代码产生不同的输出。
代码是标准的facebook sdk登录迭代,所以:
private CallbackManager fbCallbackManager;
private LoginButton signFacebookButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(context);
fbCallbackManager = CallbackManager.Factory.create();
setContentView(R.layout.sign);
signFacebookButton = (LoginButton) findViewById(R.id.sign_fb_button);
signFacebookButton.setReadPermissions("public_profile");
signFacebookButton.setReadPermissions("email");
signFacebookButton.registerCallback(fbCallbackManager, fbCallback);
}
private FacebookCallback<LoginResult> fbCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
Log.d("Facebook Callback", "success");
}
@Override
public void onCancel() {
Log.d("Facebook Callback", "cancel");
}
@Override
public void onError(FacebookException e) {
Log.d("Facebook Callback", "error");
}
};
在两个不同活动中使用的相同精确代码表现不同。
在首次调用它的活动中,它可以正常工作,但是如果我跳过第一个活动(所以我没有单击登录按钮),但是在第二个活动中单击一个新的登录按钮,代码是根本不工作。它会显示facebook进度条几秒钟,然后什么也没发生(控制台中也没有打印任何日志)。任何帮助都会非常感激。
答案 0 :(得分:0)
在这之后浪费了半天之后,我注意到我错过了onActivityResult
中的实际fbcallbackManager调用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
this.fbCallbackManager.onActivityResult(requestCode, resultCode, data);
}