.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
相关产品推荐
相关产品推荐

