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

基于.NET 8的MAUI应用Android/iOS社交登录实现难题及2024最佳实践咨询

.NET 8 MAUI 社交登录(Google/Apple)最佳实践

Google Sign In 实现方案

解决现有客户端ID兼容问题(无需修改生产环境配置)

你遇到的"Custom URI scheme is not enabled"错误,核心是现有Google OAuth客户端ID未配置对应Android重定向URI,而非需要修改客户端ID本身。按以下步骤操作:

  1. 登录Google Cloud控制台,找到当前生产环境使用的Android类型OAuth客户端ID
  2. 在"授权重定向URI"列表中添加:com.googleusercontent.apps.【你的客户端ID前缀】:/oauth2redirect(前缀即客户端ID中com.googleusercontent.apps.之后的部分)
  3. 在MAUI Android项目的AndroidManifest.xml中添加Intent过滤器,匹配上述scheme:
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="com.googleusercontent.apps.【你的客户端ID前缀】" />
</intent-filter>

核心代码实现(使用MAUI内置WebAuthenticator)

using Microsoft.Maui.Authentication;

// 构造授权URL
var authUri = new Uri($"https://accounts.google.com/o/oauth2/v2/auth?client_id={你的客户端ID}" +
                      "&redirect_uri=com.googleusercontent.apps.【你的客户端ID前缀】:/oauth2redirect" +
                      "&response_type=code&scope=openid%20email%20profile");
var callbackUri = new Uri("com.googleusercontent.apps.【你的客户端ID前缀】:/oauth2redirect");

// 发起认证
var authResult = await WebAuthenticator.AuthenticateAsync(authUri, callbackUri);

// 用返回的授权码和后端交换令牌(逻辑与Xamarin时代一致)
var accessToken = await ExchangeAuthCodeForToken(authResult.Code);

Apple Sign In 实现方案

直接使用MAUI内置的AppleSignInAuthenticator,无需自定义渲染器:

配置步骤

  1. 在iOS项目中开启"Sign In with Apple"能力(通过Visual Studio的项目属性或Xcode)
  2. 在Entitlements.plist中添加权限配置:
<key>com.apple.developer.applesignin</key>
<array>
    <string>Default</string>
</array>

核心代码实现

using Microsoft.Maui.Authentication;

try
{
    // 请求邮箱、用户名称权限
    var authResult = await AppleSignInAuthenticator.AuthenticateAsync(new[] { "email", "name" });
    
    // 获取身份令牌,用于后端验证
    var idToken = authResult.IdToken;
    await ValidateAppleIdTokenWithBackend(idToken);
}
catch (Exception ex)
{
    // 处理登录失败逻辑
}

避坑建议

  1. 放弃旧Xamarin插件(如Plugin.GoogleClient):MAUI内置API已完全替代,兼容性更好
  2. 暂时避开Firebase:2024年Firebase对MAUI的官方支持文档不完善,编译错误多,排查成本高
  3. 后端验证逻辑复用:Google/Apple的令牌验证逻辑与Xamarin时代完全一致,无需修改现有后端代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:18:24