我正在尝试将Facebook登录集成到我的Android应用程序中。 我正在使用通过gradle下载的最新Facebook SDK:
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
这是我的代码:
public class SocialLogin extends Activity {
private static final String TAG = "SocialLogin";
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_social_login);
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
loginButton.setReadPermissions(Arrays.asList("email", "public_profile"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d(TAG, "onSuccess");
Toast.makeText(getApplicationContext(), "Login attempt success.", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Login attempt canceled.", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException e) {
Toast.makeText(getApplicationContext(), "Login Failed.", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult");
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
Facebook SDK 显示了正确的活动以接受所请求的权限,但同时我的 Activity 的 onDestroy() 方法被某人调用。这意味着当您接受所需的权限时应用程序已经关闭,并且 onActivityResult 永远不会被调用。 不幸的是,logcat 并没有显示任何有用的信息。 只有当我重新启动应用程序并再次点击 Facebook 登录按钮时,才会调用 onActivityResult 方法。 有什么建议吗?