首页 > 解决方案 > Unity - 将 Firebase 与 Facebook 登录一起使用时,SignInWithCredentialAsync 会导致内部错误

问题描述

我是一名 Unity 程序员,我正在使用 Firebase 来管理用户帐户。我尝试设置 Facebook 登录。Facebook sdk没有问题,我可以成功登录。但是,当 Facebook sdk 返回的凭据用作FirebaseAuth.DefaultInstance.SignInWithCredentialAsync的参数时,它会返回内部错误。

在此处输入图像描述

这是我的代码:

void authCallBack(IResult result) {
    if (result.Error != null) {
        Debug.Log(result.Error);
    }
    else {
        if (FB.IsLoggedIn) {
            Debug.Log("Log in successfully.");
            AccessToken token = AccessToken.CurrentAccessToken;
            Credential credential = FacebookAuthProvider.GetCredential(token.TokenString);
            accessToken(credential);
        }
        else
            Debug.Log("not logged in");
    }
}

public void accessToken(Credential firebaseResult) {
    FirebaseAuth auth = FirebaseAuth.DefaultInstance;
    Debug.Log("Auth CurrentUser: " + FirebaseAuth.DefaultInstance.CurrentUser);
    if (!FB.IsLoggedIn){
        return;
    }
    if (auth.CurrentUser != null && !string.IsNullOrEmpty(auth.CurrentUser.UserId)){
        Debug.Log("CurrentUser ID: " + auth.CurrentUser.UserId);
        auth.CurrentUser.LinkAndRetrieveDataWithCredentialAsync(firebaseResult).ContinueWith(task =>
        {
            if (task.IsCanceled || task.IsFaulted)
            {
                Debug.LogError("LinkWithCredentialAsync encountered an error: " + task.Exception);
                // TODO: Show error message to player
                return;
            }

            FirebaseUser newUser = task.Result.User;
            Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})",
                newUser.DisplayName, newUser.UserId);
        });
    } else {
        auth.SignInWithCredentialAsync(firebaseResult).ContinueWith(task =>
        {
            if (task.IsCanceled || task.IsFaulted) {
                Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception.InnerExceptions[0].Message);
                // TODO: Show error message to player
                return;
            }
            FirebaseUser newUser = task.Result;
            Debug.LogFormat("Credentials successfully created Firebase user: {0} ({1})",
                newUser.DisplayName, newUser.UserId);
        });
    }
}

VS调试中的更多细节:

在此处输入图像描述

当我在我的 Android 设备上测试它时,它只显示一条错误消息 g_methods_cached

在此处输入图像描述

任何人都可以帮忙吗?

PS这是昨天提出的另一个问题,我不知道它是否相关。 未找到 FirebaseAuthWebException。请验证 AAR

标签: androidfacebookfirebaseunity3d

解决方案


哦,我犯了一个愚蠢的错误!

在 Facebook 开发者页面中,设置 > 基本中有 App Secret。并且必须使用 App ID 将其添加到 Firebase 控制台中。现在没问题。接着......

我只是复制了 App Secret 而没有显示并粘贴到 Firebase 控制台中。

这意味着我在 Firebase 控制台中设置了 8 个黑点 (●●●●●●●●) 作为我的 App Secret。我知道这太傻了。但以防万一有人像我这样粗心。


推荐阅读