Unity-将Firebase与Facebook登录一起使用时,SignInWithCredentialAsync导致内部错误

时间:2018-11-22 04:17:44

标签: android facebook firebase unity3d

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

enter image description here

这是我的代码:

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调试中的更多详细信息:

enter image description here

当我在Android设备上对其进行测试时,它只会显示一条错误消息 g_methods_cached

enter image description here

有人可以帮忙吗?

P.S。这是昨天又问的另一个问题,我不知道是否相关。 FirebaseAuthWebException not found. Please verify the AAR

1 个答案:

答案 0 :(得分:0)

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

在Facebook Developer页面中,“设置”>“基本”中有“应用程序机密”。并且必须使用App ID将其添加到Firebase控制台。现在没问题。然后……

我只是复制了“应用秘密”,没有显示并粘贴到Firebase控制台中。

这意味着我在Firebase控制台中将8个黑点(●●●●●●●●)设置为我的应用程序密码。我知道这太傻了。但是以防万一有人像我这样粗心。