Objective-C iOS集成Azure B2C遇scheme无注册处理器及重定向问题求助
Azure B2C iOS集成:
scheme does not have a registered handler 及重定向问题排查 1. 检查Xcode中URL Scheme配置
- 打开项目的
Info标签页,找到URL Types区域 - 添加新的URL Type:
Identifier填写与Bundle ID一致的com.bacd.mobilexyzURL Schemes填写msauth.com.bacd.mobilexyz(必须和重定向URL的前缀完全匹配)- 无需修改
Role字段,保持默认即可
2. 验证Azure B2C应用注册配置
- 登录Azure门户,进入目标B2C租户的应用注册页面
- 进入
Authentication选项卡:- 确认
Redirect URIs已添加msauth.com.bacd.mobilexyz://auth,且平台选择为iOS/macOS - 检查
Implicit grant and hybrid flows下的ID tokens和Access tokens是否已勾选(根据你的应用需求选择,登录流程至少需要勾选ID tokens) - 确认
Supported account types设置符合你的业务场景
- 确认
3. 确保代码中正确处理回调(Objective-C)
AppDelegate.m(iOS 12及以下)
#import <MSAL/MSAL.h> - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { return [MSALPublicClientApplication handleMSALResponse:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]]; }
SceneDelegate.m(iOS 13及以上)
#import <MSAL/MSAL.h> - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts { UIOpenURLContext *context = URLContexts.anyObject; [MSALPublicClientApplication handleMSALResponse:context.URL sourceApplication:context.options.sourceApplication]; }
MSAL客户端初始化验证
确认初始化参数与配置一致:
NSString *clientId = @"你的应用Client ID"; NSString *tenantId = @"你的B2C租户ID"; NSString *redirectUri = @"msauth.com.bacd.mobilexyz://auth"; MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:clientId redirectUri:redirectUri authority:[MSALB2CAuthority authorityWithTenantIdentifier:tenantId]]; MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:nil];
4. 其他排查点
- 清理Xcode缓存(
Cmd+Shift+K),重启Xcode和测试设备,避免缓存导致配置不生效 - 确认测试设备上安装的是最新编译的应用包,确保新的URL Scheme已被打包
- 检查重定向URL的拼写,Azure B2C对URL匹配是严格区分大小写和标点的
- 如果使用了Universal Links,暂时禁用后测试,排除冲突可能
内容的提问来源于stack exchange,提问作者shubham kamboj
相关产品推荐
相关产品推荐

