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

.NET MAUI Android应用如何获取Google登录用户的邮箱及个人资料

在.NET MAUI Android中获取Google登录用户的邮箱与个人资料

一、弃用方案说明

你之前使用的GoogleApiClient和PlusClass.PeopleApi均已被Google官方弃用,无法正常获取用户数据,需改用Google Sign-In原生集成方案。

二、具体实现步骤

1. 配置Google Cloud项目

  • 登录Google Cloud Console,确保已创建对应项目并启用Google Sign-In API。
  • 创建OAuth 2.0客户端ID,填写与MAUI Android项目完全一致的包名和SHA-1指纹(SHA-1可通过Visual Studio的「工具>Android>Android签名助手」获取)。

2. 项目依赖与配置

  • 在MAUI项目的Android部分安装NuGet包:Xamarin.GooglePlayServices.Auth
  • 编辑Android项目的AndroidManifest.xml,添加以下内容:
    <uses-permission android:name="android.permission.INTERNET" />
    
    <application ...>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
        <activity android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity" />
    </application>
    

3. 代码实现

在Android项目的MainActivity.cs或页面后台代码中实现登录逻辑:

初始化登录客户端
// 配置需要获取的用户权限
var gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn)
    .RequestEmail() // 请求邮箱权限
    .RequestProfile() // 请求个人资料权限
    .Build();

// 获取登录客户端实例
var signInClient = GoogleSignIn.GetClient(this, gso);
发起登录请求
// 启动登录界面
var signInIntent = signInClient.SignInIntent;
StartActivityForResult(signInIntent, 1001); // 1001为自定义请求码
处理登录结果

重写OnActivityResult方法提取用户数据:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    if (requestCode == 1001)
    {
        var signInTask = GoogleSignIn.GetSignedInAccountFromIntent(data);
        try
        {
            var account = signInTask.Result;
            // 提取用户核心信息
            string userEmail = account.Email;
            string userName = account.DisplayName;
            string userPhotoUrl = account.PhotoUrl?.ToString();
            
            // 此处可对获取到的用户数据进行业务处理
        }
        catch (Exception ex)
        {
            // 处理登录失败场景(如用户取消、网络异常等)
        }
    }
}

三、常见问题排查

  • 确认Google Cloud Console中的客户端ID配置与项目包名、SHA-1完全匹配,这是登录失败最常见的原因。
  • 检查设备上的Google Play服务是否为最新版本,旧版本可能导致登录流程异常。
  • 验证登录的Google账号已完善个人资料(包含有效邮箱),避免因账号本身无数据导致返回空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:10:22