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

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提供的回调地址,格式通常是:
    https://{你的B2C租户名}.b2clogin.com/{你的B2C租户名}.onmicrosoft.com/oauth2/authresp
    
    这个地址也可以直接从Azure AD B2C的Google身份提供商配置页面复制过来,一定要准确添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:50