java - Android Facebook 登录回调永远不会触发

标签 java android facebook-login android-facebook facebook-sdk-4.0

我使用 facebook 登录按钮创建了一个 Activity ,并在 onCreate 方法中注册了回调。现在,当我按下登录按钮并通过 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. 我假设您已经在 Facebook 开发者控制台上创建了一个项目,获得了开发哈希并且状态设置为公开。

  2. 您的应用程序 list 具有应用程序 ID 的元数据标记。

因此进一步了解您的代码,在您的 Activity 中添加 onActivityResult() 并将其转发给您的 callbackManager。 ( Facebook Documentation )

如果登录成功,则 LoginResult 参数具有新的 AccessToken,以及最近授予或拒绝的权限。

您不需要 registerCallback 即可成功登录,您可以选择使用下面描述的 AccessTokenTracker 类来跟踪当前访问 token 的更改。

然后在onActivityResult()中将登录结果转发给在onCreate()中创建的callbackManager:

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

关于java - Android Facebook 登录回调永远不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31092240/

相关文章:

android - 无法使用支持库获取 ActionBar MenuItem 的操作 View

android - Profile.getCurrentProfile() 登录后返回 null (FB API v4.0)

Facebook 应用程序登录 - 交换 oauth 访问 token 的代码只能运行一次

Facebook C# SDK - 服务器流认证

android - 重命名 Play 商店应用程序

java - 如何在SWT Canvas 上绘制选择框?

java - Struts 2 错误 - com.opensymphony.xwork2.util.logging.commons.CommonsLogger 错误

java - 应用程序图标未显示在 Android 操作栏中

javascript - channel 网址

java - 使用自定义提供程序的 Spring Boot 安全性