Xamarin Forms中AD B2C谷歌登录报错redirect_uri_mismatch求助
解决Xamarin Forms集成Azure AD B2C时Google登录的
redirect_uri_mismatch错误 嘿,这个问题我之前帮不少开发者排查过,redirect_uri_mismatch本质就是Azure AD B2C、Google控制台和你代码里配置的回调地址三者不匹配,咱们一步步来梳理排查:
1. 先确认代码里的重定向URI是什么
打开你用的TodoAzureAuthADB2CClientFlow示例项目,找到初始化PublicClientApplication的代码(一般在AuthService类或者类似的认证逻辑里),看看你指定的redirectUri具体值是什么。比如类似这样的代码片段:
var pca = new PublicClientApplication(Constants.ClientId, Constants.Authority); var authResult = await pca.AcquireTokenInteractive(Constants.Scopes) .WithRedirectUri(Constants.RedirectUri) .ExecuteAsync();
把这个Constants.RedirectUri的值记下来,后面要和两处配置做对比。
2. 检查Azure AD B2C中Google身份提供商的回调地址
登录Azure门户,找到你的AD B2C租户,按以下步骤操作:
- 进入身份体验框架 → 身份提供商,找到已配置的Google提供商
- 查看页面里的回复URL(也就是Google登录后要跳转回的地址),这个地址必须和你代码里的
redirectUri完全一致——大小写、斜杠、字符都不能差!
3. 别漏了Google Cloud控制台的配置(最容易踩坑的点)
Google登录本身需要在Google Cloud控制台里授权重定向URI,你可能之前只配置了Azure端,忽略了这里:
- 登录Google Cloud控制台,找到你为AD B2C创建的Google OAuth客户端ID
- 进入API和服务 → 凭据,找到对应的OAuth 2.0客户端ID
- 在已授权的重定向URI里,必须添加Azure AD B2C提供的回调地址,格式通常是:
这个地址也可以直接从Azure AD B2C的Google身份提供商配置页面复制过来,一定要准确添加。https://{你的B2C租户名}.b2clogin.com/{你的B2C租户名}.onmicrosoft.com/oauth2/authresp
4. 验证平台特定的URL Scheme配置
Xamarin Forms的iOS和Android平台需要单独配置URL Scheme,确保和redirectUri的前缀匹配:
- iOS端:打开
Info.plist,检查CFBundleURLTypes里的CFBundleURLSchemes是否和redirectUri的前缀一致。比如你的redirectUri是msalabc12345://auth,那Scheme应该是msalabc12345:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msalabc12345</string> </array> </dict> </array> - Android端:打开
AndroidManifest.xml,检查BrowserTabActivity的intent-filter里的scheme是否和redirectUri前缀一致:<activity android:name="microsoft.identity.client.BrowserTabActivity"> <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="msalabc12345" /> </intent-filter> </activity>
5. 最后清除缓存测试
有时候本地缓存的旧配置会干扰测试,建议:
- 卸载模拟器/真机上的测试应用
- 清除系统浏览器的缓存(如果用的是系统浏览器完成登录流程)
- 重新生成并部署应用,再测试Google登录
总结下来,只要确保代码里的redirectUri、Azure AD B2C的Google提供商回复URL、Google Cloud控制台的授权重定向URI三者完全一致,这个错误基本就能解决。
内容的提问来源于stack exchange,提问作者Karlitos2312
相关产品推荐
相关产品推荐

