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

.NET MAUI iOS中使用WebAuthenticator实现Facebook登录时,OAuth无法重定向到自定义URI Scheme的问题

.NET MAUI iOS中使用WebAuthenticator实现Facebook登录时,OAuth无法重定向到自定义URI Scheme的问题

我之前在做.NET MAUI iOS项目手动实现Facebook OAuth登录时也碰到过一模一样的问题,折腾了好一阵才摸清楚各个坑,给你分享几个排查和解决的关键点:

  • 先检查iOS项目的Info.plist配置
    这是最容易出问题的地方,你必须确保已经正确注册了自定义URI Scheme。打开项目的Info.plist,添加CFBundleURLTypes数组配置,示例如下(把myapp换成你自己的Scheme前缀,com.yourcompany.yourapp换成你的应用Bundle ID):

    <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>myapp</string>
        </array>
        <key>CFBundleURLName</key>
        <string>com.yourcompany.yourapp</string>
      </dict>
    </array>
    

    另外保险起见,把你的Scheme也加到LSApplicationQueriesSchemes数组里,让应用能正常识别这个自定义Scheme:

    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>myapp</string>
    </array>
    
  • 核对Facebook开发者后台的重定向URI配置
    一定要在Facebook开发者后台的应用设置里,把你的完整重定向URI(比如myapp://fb-login)添加到「有效的OAuth重定向URI」列表中。这里必须完全匹配,大小写、斜杠、后缀一个都不能错,Facebook对这个的校验非常严格,漏加或者写错直接就会导致重定向失败。

  • 检查WebAuthenticator的调用代码
    调用WebAuthenticator.Default.AuthenticateAsync时,传入的callbackUri必须和你所有配置的完全一致,而且要注意Facebook OAuth请求的参数格式:

    var authUri = new Uri($"https://www.facebook.com/v18.0/dialog/oauth?client_id=你的应用ID&redirect_uri=myapp://fb-login&response_type=code&scope=public_profile,email");
    var callbackUri = new Uri("myapp://fb-login");
    var authResult = await WebAuthenticator.Default.AuthenticateAsync(authUri, callbackUri);
    

    这里推荐用response_type=code的授权码流程,比token流程在iOS上更稳定,能避免WebKit拦截参数的问题。

  • 调试时的小细节
    如果你用真机调试,要确保应用的签名配置正确,Info.plist的修改已经同步到了签名的权限中;如果是模拟器,修改配置后最好清理项目、重启模拟器,避免缓存导致配置不生效。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:08:06