簡體   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)

我有一個 Android 應用程序,它通過 Facebook 登錄。當我使用 Facebook SDK 時一切正常

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

但是,最近我注意到在我的 Gradle 文件中有 Facebook SDK 可用的更新,所以我將其更新為

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

然后問題發生了。

在我進行如下代碼設置之前:

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

在我的活動 class 中,我有以下代碼:

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

當我在 Facebook SDK 11.1.1 時,用戶通過 Facebook 登錄后,方法:onActivityResult 被觸發,然后 FacebookCallback 注冊被觸發。

升級到Facebook SDK 13.0.0后(我試過12.0.0也有同樣的問題),用戶登錄Facebook后,調用了onActivityResult,但是沒有調用FacebookCallback。

因此我的登錄過程被打破了。

任何人都有同樣的問題,是解決方案嗎?

根據帖子: How to use Facebook Sign in CallbackManager with onActivityResult deprecated?

好像Facebook Android SDK 12、使用方法

onActivityResult

已棄用。 從今天開始,我發布了這個問題(2/March/2022),Facebook 官方開發者文檔: https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback還在告訴大家老辦法Facebook登錄。

我希望這篇文章可以幫助其他面臨同樣問題的人。

以下是解決方案

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

解決方案:

  1. 消除

    callbackManager.onActivityResult(requestCode, resultCode, data); 來自 onActivityResult

  2. 使用權限設置您的 Facebook 按鈕

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

  3. 將 LoginManager 替換為您的 LoginButton 實例。 改變:

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() { 更改為:

    mLoginButton.registerCallback(callbackManager, new FacebookCallback() {

Emil 的評論是正確的,我們不能將 loginButton 解決方案與 LoginManger 一起使用。 但經過幾個小時的實驗,我通過降級依賴版本解決了這個問題,請參考: https://stackoverflow.com/a/74490644/13694485

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM