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

Authentication Firebase.Auth.GoogleAuthProvider.GetCredential的第一个参数是什么?,authentication,unity3d,firebase,firebase-authentication,Authentication,Unity3d,Firebase,Firebase Authentication,新的Firebase for Unity support刚刚发布到Beta版,我正试图用它实现Auth。我已经有一个Google登录,它使用来自GooglePlayGames.PlayGamesPlatform.Instance.GetServerAuthCode的身份验证代码实现oauth2流,并将其发送到服务器,服务器使用https://www.googleapis.com/oauth2/v4/tokenendpoint 我假设这个访问令牌是Firebase.Auth.GoogleAuthP

新的Firebase for Unity support刚刚发布到Beta版,我正试图用它实现Auth。我已经有一个Google登录,它使用来自
GooglePlayGames.PlayGamesPlatform.Instance.GetServerAuthCode
的身份验证代码实现oauth2流,并将其发送到服务器,服务器使用
https://www.googleapis.com/oauth2/v4/token
endpoint

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

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

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

除了需要回调之外,
GetIdToken
GetAccessToken
GetIdToken
之间的区别是什么?

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

第一次登录firebase时,执行获取idToken和AccessToken的正常过程,获取用户的电子邮件并将其存储在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");
AndroidJavaClass authUtil=新的AndroidJavaClass(“com.google.android.gms.auth.GoogleAuthUtil”);
AndroidJavaClass unity=新的AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject currentActivity=unity.GetStatic(“currentActivity”);
string idToken=authUtil.CallStatic(“getToken”,currentActivity,PlayerData.Email,“受众:服务器:客户端_id:xxxxxxxxx-xxxxxxxxxxxxx.apps.googleusercontent.com”);//你的客户id应该是一个数字,一个破折号,然后是一堆数字和字母
string accessToken=authUtil.CallStatic(“getToken”,currentActivity,PlayerData.Email,“oauth2:https://www.googleapis.com/auth/plus.me");

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

您好,您找到解决此问题的方法了吗?我也陷入了同样的境地。