Android Facebook LoginButton Callback跳转到取消

the*_*Yak 8 android facebook

我有以下代码.这是对Facebook的Android API中LoginButton的回调函数的简单测试.

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);
    loginButton.setReadPermissions("user_friends");
    loginButton.setReadPermissions("email");
    loginButton.setReadPermissions("public_profile");
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.e("SUCCESS", "LOGIN SUCCESSFUL");
        }

        @Override
        public void onCancel() {
            Log.e("CANCEL", "Cancelled");
        }

        @Override
        public void onError(FacebookException e) {
            Log.e("ERROR", "Facebook Exception");
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是每当我点击loginButton时,会出现一个对话框,并在短时间内消失,然后logcat打印出"CANCEL"文本.我似乎无法修复此错误,并且我没有单击取消,因为该对话框只显示并立即消失.

请帮我解决这个问题?

gab*_*iel 10

由于Facebook现在需要审查使用发布访问权限的应用程序,您需要登录Facebook开发者控制台,在应用程序部分选择您的应用程序,单击角色并添加测试人员(或管理员)角色.在此之后,您应该能够获得正确的访问令牌.


Rah*_*ran 8

这个答案在类似的情况下帮助了我.

/sf/answers/2213767951/

LoginManager.getInstance().logOut();在尝试登录前致电.


Tho*_*wes 5

我遇到了这个问题。

似乎是这样,如果您在已经拥有访问令牌(具有所有必需的权限)时尝试登录(使用logInWithReadPermissionslogInWithPublishPermissions),onCancel则会执行回调。

也就是说你不应该让用户登录,因为用户已经登录了。首先检查这个。