3

Der neue Firebase for Unity-Support wurde gerade in Beta veröffentlicht und ich versuche, Auth damit zu implementieren. Ich habe bereits eine Google-Anmeldung, die den oauth2-Fluss mithilfe eines Authentifizierungscodes von GooglePlayGames.PlayGamesPlatform.Instance.GetServerAuthCode implementiert und an einen Server sendet, der sie für ein Zugriffstoken unter Verwendung des https://www.googleapis.com/oauth2/v4/token-Endpunkts austauscht.Was ist der erste Parameter für Firebase.Auth.GoogleAuthProvider.GetCredential?

Ich nehme an, dieses Access-Token ist der zweite Parameter der Firebase.Auth.GoogleAuthProvider.GetCredential-Methode, aber was ist der ID-Token, dass der erste Parameter fragt? Ist das Token erhalten von GooglePlayGames.PlayGamesPlatform.Instance.GetIdToken (selbe wie GoogleAuthUtil.GetToken, wenn meine Lesung der docs/code korrekt ist)?

Wenn dies der Fall ist, warum sind beide erforderlich? Ich dachte, das Zugriffstoken genügte, um einen Benutzer mit Google Cloud-Diensten zu authentifizieren, und der ID-Token wurde ausgemustert.

Edit: Nach einigen Tests habe ich festgestellt, dass die Weitergabe der ID Token von GooglePlayGames.PlayGamesPlatform.Instance.GetIdToken ermöglicht Firebase zu authentifizieren. Problem ist, es fragt jedes Mal nach der E-Mail-Adresse des Benutzers. Das möchte ich möglichst vermeiden.

Was ist der Unterschied zwischen GetToken, GetAccessToken und GetIdToken, abgesehen davon, dass GetIdToken einen Rückruf erfordert?

Antwort

1

Ich habe es geschafft, "hacken", um es zum Laufen zu bringen ... Aber ich denke immer noch, dass die richtige Methode nur GetServerAuthCode verwenden sollte, aber ich kann es nicht damit arbeiten lassen.

Führen Sie Ihren normalen Prozess aus, um idToken und AccessToken das erste Mal zu erhalten. Wenn Sie sich bei Firebase anmelden, erhalten Sie die E-Mail des Benutzers und speichern sie in playerprefs. Dann wird das zweite Mal, wenn Sie bereits die E-Mail Sie dies tun haben:

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"); 

Hoffe, es hilft, obwohl es wäre greatif jemand eine Lösung mit GetServerAuthCode Ursache postet, dass die richtige Art und Weise

+0

Hallo, haben Sie eine gefunden Workaround noch für dieses Problem? Ich bin auch in der gleichen Situation stecken. –

Verwandte Themen