使用 Unity 和 Firebase 的 Facebook 身份验证:凭据格式错误或已过期

时间:2021-01-30 21:37:08

标签: c# unity3d firebase-authentication facebook-authentication

我看到有些人遇到了这个问题,但实际上没有一个答案对我有帮助。

因此,我正在创建一个统一的应用程序 (2020.1.11f1),我正在使用 Firebase 来处理身份验证过程。电子邮件/密码身份验证工作正常,但现在我正在处理 Facebook 身份验证,我遇到了著名的错误:

<块引用>

Firebase.FirebaseException:提供的身份验证凭据格式错误或已过期

我将我的应用登录到 facebook 开发者并将其连接到 firebase。我仔细检查了 App ID 和 Secret ID。 此外,我的令牌有效,因为我正在检查其有效性。此外,它知道它来自 facebook。

我正在使用这段代码(来自官方文档):

private void facebook_loginFirebase(string accessToken)
        {
            //Get firebase authenticator and credential to perform connection
            Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
            Firebase.Auth.Credential credential = Firebase.Auth.FacebookAuthProvider.GetCredential(accessToken);

            //Perform Connection
            auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
                if (task.IsCanceled)
                {
                    Debug.LogError("SignInWithCredentialAsync was canceled.");
                    popup_manager.openErrorPopup("5010", "Task has been cancelled");
                    return;
                }
                if (task.IsFaulted)
                {
                    Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
                    popup_manager.openErrorPopup("5011", "An error happened: " + task.Exception);
                    return;
                }

                Firebase.Auth.FirebaseUser newUser = task.Result;
                Debug.LogFormat("User signed in successfully: {0} ({1})",
                    newUser.DisplayName, newUser.UserId);
                popup_manager.openInformationPopup("Account created with userID: " + newUser.UserId);

            });
        }

另外,我使用的是 Facebook SDK 9.0。它似乎与以前的版本相比有所改变,并且互联网上的所有教程均基于旧版本。 您还有其他要检查的提示吗?

提前致谢!如果我需要向您提供更多信息,请告诉我!

1 个答案:

答案 0 :(得分:3)

我在朋友的帮助下发现了错误。 所以基本上,它来自在 facebook 开发者上创建的应用程序。创建应用时,您可以选择:

  • 管理业务整合
  • 构建或连接到游戏
  • 打造互联体验
  • 更多选项

我的游戏是安卓和iOS游戏,所以我选择了第二个选项。问题是,我需要第三个选项,因为我的游戏不会在 Facebook 上发布。当您选择第二个选项时,您的令牌将以 GG 开头,并且在使用 SignInWithCredentialAsync() 时会抛出错误。

这个链接对我有帮助: https://github.com/firebase/quickstart-unity/issues/826