React Native集成Azure AD B2C时BrowserTabActivity配置报错如何解决
问题原因及解决方案
- 确认
BrowserTabActivity配置添加到正确的Manifest文件
必须添加到android/app/src/main/AndroidManifest.xml的<application>节点内部,不要误添加到debug、test环境对应的Manifest文件中,且配置需要放在其他activity同级位置。 - 补充Android 12+必需的exported属性
给BrowserTabActivity标签添加android:exported="true"属性,否则intent-filter不会被系统识别:<activity android:name="com.microsoft.identity.client.BrowserTabActivity" android:exported="true"> <!-- 原有intent-filter配置 --> </activity> - 校验data标签参数与实际配置完全匹配
android:host必须和你项目的applicationId(在android/app/build.gradle中定义)完全一致,不要直接复制示例中的com.checkmobileappandroid:path的值是你应用签名证书SHA-1哈希的base64编码值,debug环境和release环境的签名哈希不同,需要分别计算后在Azure后台对应配置,同时更新Manifest里的值- 路径值开头的
/不能省略,大小写必须和Azure后台配置的重定向URI完全一致
- 补充Android 11+的queries声明
在Manifest的根<manifest>节点下(和<application>同级)添加浏览器查询声明,避免系统无法匹配到可用浏览器:<queries> <intent> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> </intent> </queries> - 校验MSAL初始化配置的重定向URI
代码中MSAL配置的redirect_uri必须和Manifest配置的完全匹配,格式为msauth://[你的包名]/[签名哈希base64值] - 完全卸载旧应用后重新构建
配置修改后先卸载测试设备上已安装的当前应用,再执行cd android && ./gradlew clean后重新运行项目,避免增量构建未更新Manifest配置。
内容的提问来源于stack exchange,提问作者Abdul Ahad
相关产品推荐
相关产品推荐

