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

Facebook Authentication using Unity and Firebase: Credential malformed or expired

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

所以,我正在 unity (2020.1.11f1) 上创建一个应用程序,我正在使用 Firebase 来处理身份验证过程。 Email/Password 身份验证有效,但现在我正在处理 facebook 身份验证,我 运行 陷入了著名的错误:

Firebase.FirebaseException: The supplied auth credential is malformed or has expired

我将我的应用程序登录到 facebook developper 并将其连接到 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。它似乎与以前的版本有所不同,并且互联网上的所有教程都是基于旧版本的。 您还有其他要检查的提示吗?

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

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

  • 管理业务集成
  • 构建或连接到游戏
  • 建立互联体验
  • 更多选项

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

这个 link 帮助了我: https://github.com/firebase/quickstart-unity/issues/826