gpt4 book ai didi

authentication - Firebase.Auth.GoogleAuthProvider.GetCredential 的第一个参数是什么?

转载 作者:行者123 更新时间:2023-12-02 03:10:00 25 4
gpt4 key购买 nike

新的 Firebase for Unity 支持刚刚发布到 Beta 版,我正在尝试用它来实现 Auth。我已经有一个 Google 登录,它使用 GooglePlayGames.PlayGamesPlatform.Instance.GetServerAuthCode 中的授权代码实现 oauth2 流程,并将其发送到服务器,服务器使用 将其交换为访问 token https://www.googleapis.com/oauth2/v4/token 端点。

我假设此访问 token 是 Firebase.Auth.GoogleAuthProvider.GetCredential 方法的第二个参数,但第一个参数要求的 ID token 是什么?这是从 GooglePlayGames.PlayGamesPlatform.Instance.GetIdToken 获得的 token (与 GoogleAuthUtil.GetToken 相同,如果我对文档/代码的阅读是正确的)?

如果是这样,为什么两者都需要?我认为访问 token 是使用谷歌云服务对用户进行身份验证所需的全部,而 ID token 正在被淘汰。

编辑:经过一些测试,我发现传递从 GooglePlayGames.PlayGamesPlatform.Instance.GetIdToken 获取的 ID token 确实允许 Firebase 进行身份验证。问题是,它每次都会询问用户的电子邮件地址。如果可能的话,我想避免这种情况。

GetTokenGetAccessTokenGetIdToken 之间有什么区别?回调?

最佳答案

为了让它工作,我设法“破解”了它......但我仍然认为正确的方法应该只使用 GetServerAuthCode,但我不能让它工作。

第一次获取 idToken 和 AccessToken 的正常过程,当您登录 firebase 时获取用户的电子邮件并将其存储在 playerprefs 中。然后第二次,如果你已经有了你这样做的电子邮件:

  AndroidJavaClass authUtil = new AndroidJavaClass("com.google.android.gms.auth.GoogleAuthUtil");
AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
string idToken = authUtil.CallStatic<string>("getToken", currentActivity, PlayerData.Email, "audience:server:client_id:XXXXXXXXXX-xxxxxxxxxxxxxx.apps.googleusercontent.com"); // your client id, should be a number a dash and then a bunch of numbers and letters
string accessToken = authUtil.CallStatic<string>("getToken", currentActivity, PlayerData.Email, "oauth2:https://www.googleapis.com/auth/plus.me");

希望它能有所帮助,尽管如果有人发布带有 GetServerAuthCode 的解决方案会更好,因为这是正确的方法

关于authentication - Firebase.Auth.GoogleAuthProvider.GetCredential 的第一个参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com