gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:03:49 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com