我正在尝试将 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 ,但与此同时,有人调用了我的 Activity 的 onDestroy() 方法。这意味着当您接受所需的权限时应用程序已经关闭,并且永远不会调用 onActivityResult。 遗憾的是,logcat 没有显示任何有用的信息。
只要我重新启动我的应用程序并再次单击 Facebook 登录按钮,就会调用 onActivityResult 方法。 有什么建议吗?
最佳答案
我也遇到过这个问题。事实证明,这是我的错,因为我的 Activity 上有 noHistory
标志,所以 onActivityResult
永远不会被调用
关于android - Facebook 登录关闭我的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40110317/