简体   繁体   English

Android CallbackManager 回调在升级到 Facebook SDK 12.0.0(或 13)后停止工作

[英]Android CallbackManager call back stopped working after upgrading to Facebook SDK 12.0.0 (Or 13)

I have an Android app that does login via Facebook. Everything was working when I was on Facebook SDK我有一个 Android 应用程序,它通过 Facebook 登录。当我使用 Facebook SDK 时一切正常

implementation 'com.facebook.android:facebook-android-sdk:11.1.1'

However, recently I noticed in my Gradle file that there is an update available for Facebook SDK, so I updated it to但是,最近我注意到在我的 Gradle 文件中有 Facebook SDK 可用的更新,所以我将其更新为

implementation 'com.facebook.android:facebook-android-sdk:13.0.0'

And then the problem happens.然后问题发生了。

Before I have my code setup like the following:在我进行如下代码设置之前:

private void facebookSignInSetup() {
    //Facebook login setup
    callbackManager = CallbackManager.Factory.create();
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                  ....
                }

And in my Activity class I have the following code:在我的活动 class 中,我有以下代码:

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

When I was on Facebook SDK 11.1.1, after user login via Facebook, method: onActivityResult is fired then FacebookCallback registered is fired.当我在 Facebook SDK 11.1.1 时,用户通过 Facebook 登录后,方法:onActivityResult 被触发,然后 FacebookCallback 注册被触发。

After upgrading to Facebook SDK 13.0.0 (I tried 12.0.0 also having the same problem), after the user login to Facebook, onActivityResult is called, however, FacebookCallback is not called.升级到Facebook SDK 13.0.0后(我试过12.0.0也有同样的问题),用户登录Facebook后,调用了onActivityResult,但是没有调用FacebookCallback。

Hence my login process is broken.因此我的登录过程被打破了。

Anyone has the same problem and is the resolution?任何人都有同样的问题,是解决方案吗?

According to the post: How to use Facebook Sign in CallbackManager with onActivityResult deprecated?根据帖子: How to use Facebook Sign in CallbackManager with onActivityResult deprecated?

It seems after Facebook Android SDK 12, the approach of using好像Facebook Android SDK 12、使用方法

onActivityResult onActivityResult

is deprecated.已弃用。 And as of today, I am posting this question (2/March/2022), Facebook official developer document: https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback is still telling everyone the old way of doing Facebook login.从今天开始,我发布了这个问题(2/March/2022),Facebook 官方开发者文档: https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback还在告诉大家老办法Facebook登录。

I hope this post could help others facing the same problem.我希望这篇文章可以帮助其他面临同样问题的人。

The following are the solution以下是解决方案

Sample code: https://github.com/facebook/facebook-android-sdk/blob/main/samples/FBLoginSample/src/main/java/com/facebook/fbloginsample/FacebookLoginActivity.java示例代码: https://github.com/facebook/facebook-android-sdk/blob/main/samples/FBLoginSample/src/main/java/com/facebook/fbloginsample/FacebookLoginActivity.java

Solution:解决方案:

  1. Remove消除

    callbackManager.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); from onActivityResult来自 onActivityResult

  2. Setup your Facebook button with permission使用权限设置您的 Facebook 按钮

    LoginButton mLoginButton = findViewById(R.id.login_button); LoginButton mLoginButton = findViewById(R.id.login_button); mLoginButton.setPermissions(Arrays.asList("public_profile", "email")); mLoginButton.setPermissions(Arrays.asList("public_profile", "email"));

  3. Replace LoginManager with your LoginButton instance.将 LoginManager 替换为您的 LoginButton 实例。 Change:改变:

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() { Change to: LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() { 更改为:

    mLoginButton.registerCallback(callbackManager, new FacebookCallback() { mLoginButton.registerCallback(callbackManager, new FacebookCallback() {

Emil's comment is correct we can't use loginButton solution with LoginManger. Emil 的评论是正确的,我们不能将 loginButton 解决方案与 LoginManger 一起使用。 But after several hours of experiments I solved it by downgrading the dependencies version please refer this: https://stackoverflow.com/a/74490644/13694485但经过几个小时的实验,我通过降级依赖版本解决了这个问题,请参考: https://stackoverflow.com/a/74490644/13694485

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Facebook Android SDK随机停止工作 - Facebook Android SDK randomly stopped working Android应用程序:Facebook LoginManager授予我“ publish_actions”权限,但应用程序从未经历过callbackManager回调(Facebook SDK 4.18.0)吗? - Android App: Facebook LoginManager gives me “publish_actions” permission but app never goes through callbackManager callback( Facebook SDK 4.18.0)? 无法解析符号callbackManager facebook sdk 4.0的lib - Cannot resolve symbol callbackManager facebook sdk 4.0's lib Eclipse和Android SDK停止工作 - Eclipse and Android SDK stopped working Android SDK突然停止工作 - Android SDK suddenly stopped working 为什么在使用Facebook登录按钮调用CallbackManager上的onActivityResult()后绝对没有任何反应? - Why absolutely nothing happens after calling onActivityResult() on the CallbackManager using the Facebook Login Button? Android 库在最新更新后停止工作 - Android libraries stopped working after the latest updates Facebook SDK登录无法在三星设备android中工作 - facebook sdk login not working in samsung devices android Gradle构建文件对于版本2.10正常运行,但是在升级到4.6之后,其停止工作 - Gradle build file working fine for version 2.10 but after upgrading to 4.6 its stopped working Facebook的朋友选择器SDK示例无法运行Android - Facebook friend picker SDK sample not working Android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM