Unity/Firebase如何使用Google进行身份验证?

use*_*080 10 c# android unity-game-engine firebase firebase-authentication

我正在尝试在Unity游戏项目中实施Firebase身份验证系统.一切都在网站的控制台面板上正确设置.我已经阅读了文档,但无法使用Unity内Firebase中的任何API登录Google.所以我买了Prime31的Unity游戏服务插件.

这是我的问题:

  1. 如何在Firebase中使用Google进行身份验证?我是否需要自己管理Google登录?

  2. 在Firebase文档中,我发现:

"用户成功登录后,请更换Firebase凭据的访问令牌,并使用Firebase凭据对Firebase进行身份验证:"

Firebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken); auth.SignInWithCredentialAsync(credential).ContinueWith(task => { //......// });

如何获得googleIdToken,googleAccessToken作为上述参数传递?

请帮忙(带代码).我非常喜欢Firebase,并希望在没有像PRIME31这样的第三方插件的情况下使用它.

Mat*_*ats 6

这是我的带有 Firebase 身份验证和 GoogleSignIn 库的完整 Google SignIn 代码:

private void SignInWithGoogle(bool linkWithCurrentAnonUser)
   {
      GoogleSignIn.Configuration = new GoogleSignInConfiguration
      {
         RequestIdToken = true,
         // Copy this value from the google-service.json file.
         // oauth_client with type == 3
         WebClientId = "[YOUR API CLIENT ID HERE].apps.googleusercontent.com"
      };

      Task<GoogleSignInUser> signIn = GoogleSignIn.DefaultInstance.SignIn();

      TaskCompletionSource<FirebaseUser> signInCompleted = new TaskCompletionSource<FirebaseUser>();
      signIn.ContinueWith(task =>
      {
         if (task.IsCanceled)
         {
            signInCompleted.SetCanceled();
         }
         else if (task.IsFaulted)
         {
            signInCompleted.SetException(task.Exception);
         }
         else
         {
            Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(((Task<GoogleSignInUser>)task).Result.IdToken, null);
            if (linkWithCurrentAnonUser)
            {
               mAuth.CurrentUser.LinkWithCredentialAsync(credential).ContinueWith(HandleLoginResult);
            }
            else
            {
               SignInWithCredential(credential);
            }
         }
      });
   }
Run Code Online (Sandbox Code Playgroud)

该参数用于登录,目的是将新的 google 帐户与当前登录的匿名用户相关联。如果需要,您可以忽略方法的这些部分。另请注意,所有这些都是在 Firebase Auth 库正确初始化后调用的。

我为 GoogleSignIn 使用了以下库: https //github.com/googlesamples/google-signin-unity

该链接的自述页面将引导您完成为您的环境进行此设置的分步说明。在遵循这些并使用上面的代码之后,我在 android 和 iOS 上都可以使用它。

这是SignInWithCredential上面代码中使用的方法:

private void SignInWithCredential(Credential credential)
   {
      if (mAuth != null)
      {
         mAuth.SignInWithCredentialAsync(credential).ContinueWith(HandleLoginResult);
      }
   }
Run Code Online (Sandbox Code Playgroud)

mAuth 是对 FirebaseAuth 的引用:

mAuth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Run Code Online (Sandbox Code Playgroud)