You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需GPG服务,在游戏中实现Google Sign In并获取用户账号信息的方法咨询

实现无Google Play Games服务的Google Sign In获取用户信息

嘿,我完全懂你的需求——不想牵扯Google Play Games那一套,就单纯想拿到Google用户的基础账号信息对吧?这里有几个经过验证的实现思路,分享给你:

方案1:直接基于Google OAuth 2.0手动实现(最轻量化,无额外依赖)

这是最原生的方式,不需要任何第三方插件,完全靠Unity自带的API就能搞定:

  • 第一步:在Google Cloud Console配置项目

    1. 创建或选择现有项目,进入「API和服务」→「凭据」
    2. 创建「OAuth 2.0 客户端ID」,选择对应平台(Android/iOS/桌面)
    3. 配置回调URI(比如Android可以用com.your.package.name:/oauth2redirect,iOS要配置对应的URL Scheme)
    4. 确保启用了「Google Identity API」(一般默认会开,但最好确认下)
  • 第二步:在Unity里处理OAuth流程

    1. 用Application.OpenURL打开Google的授权端点,带上必要参数:
      string authUrl = "https://accounts.google.com/o/oauth2/v2/auth" +
          $"?client_id=YOUR_CLIENT_ID" +
          $"&redirect_uri=YOUR_REDIRECT_URI" +
          $"&response_type=code" +
          $"&scope=email%20profile" +
          $"&access_type=offline";
      Application.OpenURL(authUrl);
      
    2. 捕获授权后的回调:Android可以通过自定义Activity拦截Intent,iOS可以通过AppDelegate的OpenURL方法获取回调里的授权码
    3. 用UnityWebRequest向Google的令牌端点发送请求,换取访问令牌和ID令牌:
      string tokenUrl = "https://oauth2.googleapis.com/token";
      WWWForm form = new WWWForm();
      form.AddField("code", "AUTHORIZATION_CODE_FROM_CALLBACK");
      form.AddField("client_id", "YOUR_CLIENT_ID");
      form.AddField("client_secret", "YOUR_CLIENT_SECRET"); // 注意:Android/iOS客户端可以省略,但桌面端需要
      form.AddField("redirect_uri", "YOUR_REDIRECT_URI");
      form.AddField("grant_type", "authorization_code");
      
      UnityWebRequest request = UnityWebRequest.Post(tokenUrl, form);
      yield return request.SendWebRequest();
      
      if (request.result == UnityWebRequest.Result.Success)
      {
          // 解析返回的JSON,拿到id_token
          string jsonResponse = request.downloadHandler.text;
          // 解析id_token(JWT格式),里面包含用户的邮箱、姓名、头像等信息
      }
      
    4. 解析ID令牌:可以用JWT库(比如Jwt.Net,Unity里可以通过NuGet导入)来解码,直接获取用户的公开信息,不需要再调用额外API

方案2:用Firebase Authentication(最省心,封装完善)

如果你不想手动处理OAuth的繁琐流程,Firebase Auth是个绝佳选择——它只做身份验证,完全不需要依赖Firebase的其他服务,也和Google Play Games无关:

  • 第一步:配置Firebase项目

    1. 在Firebase控制台创建项目,启用「Authentication」服务
    2. 在「登录方法」里启用「Google」提供商,配置好Google Cloud的客户端ID和密钥(其实Firebase会自动关联,但最好确认下)
    3. 下载google-services.json(Android)或GoogleService-Info.plist(iOS),导入Unity项目的Assets根目录
  • 第二步:Unity集成代码

    1. 导入Firebase Auth的Unity SDK(可以通过Firebase控制台的「添加应用」→「Unity」步骤获取SDK,或者用Unity Package Manager安装)
    2. 初始化Firebase,然后调用Google登录:
      using Firebase;
      using Firebase.Auth;
      using UnityEngine;
      
      public class GoogleSignInManager : MonoBehaviour
      {
          private FirebaseAuth auth;
      
          void Start()
          {
              FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
              {
                  if (task.Result == DependencyStatus.Available)
                  {
                      auth = FirebaseAuth.DefaultInstance;
                  }
                  else
                  {
                      Debug.LogError("Firebase依赖初始化失败");
                  }
              });
          }
      
          public void SignInWithGoogle()
          {
              GoogleSignInProvider provider = new GoogleSignInProvider();
              auth.SignInWithProviderAsync(provider).ContinueWith(task =>
              {
                  if (task.IsCompletedSuccessfully)
                  {
                      FirebaseUser user = task.Result;
                      // 获取用户信息
                      Debug.Log($"用户邮箱:{user.Email}");
                      Debug.Log($"用户姓名:{user.DisplayName}");
                      Debug.Log($"用户头像URL:{user.PhotoUrl}");
                  }
                  else
                  {
                      Debug.LogError("登录失败:" + task.Exception);
                  }
              });
          }
      }
      
    3. 给按钮绑定SignInWithGoogle方法就行,剩下的授权流程Firebase都帮你处理了,包括回调、令牌解析这些

注意事项

  • 不管用哪种方案,Android平台都需要配置SHA-1指纹(在Google Cloud Console和Firebase控制台都要填),iOS平台要配置对应的URL Scheme
  • 只请求必要的权限范围:比如email和profile就足够获取基础账号信息,不要请求多余的权限
  • 不要存储用户的敏感信息,ID令牌里的信息都是公开的,可以直接使用,但不要泄露用户的隐私数据

内容的提问来源于stack exchange,提问作者Bobby Redjeans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:11:37