Android Facebook 登录回调永远不会火

标签: Java Android
发布时间: 2017/3/19 14:26:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我创建了 activity 与 facebook 登录 button 及注册回调的 onCreate 方法。现在当我按下登录 button 和登录通过 facebook 我期望我的回调将被解雇,但是他们没有。我到底做错了?

    CallbackManager callbackManager;
    LoginButton loginButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        FacebookSdk.sdkInitialize(getApplicationContext());

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.setReadPermissions("user_friends");
        callbackManager = CallbackManager.Factory.create();

        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), "Cancelled!", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(FacebookException e) {
                Toast.makeText(getApplicationContext(), "Error!", Toast.LENGTH_LONG).show();
            }
        });
    }

解决方法 1:

因为您正在发布代码回调不工作。

  1. 我假设你已经创建了一个项目上 facebook 开发人员控制台,获得发展哈希值, 和状态设置为公共。

  2. application manifest 具有元数据 tagapplication id。

所以进一步来到您的代码,添加 onActivityResult() 在你 activity 并转发给你的 callbackManager.Facebook 文档

如果登录成功,系统将有新的 AccessToken,LoginResult 参数和最近授予或拒绝权限。

你不需要登录成功的 registerCallback,你可以选择当前访问令牌的更改进行跟踪与 AccessTokenTracker 类如下所述。

然后在 onActivityResult() 转发到 callbackManager 在 onCreate() 中创建登录结果︰

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
赞助商