我是 React Native 新手,我正在尝试使用 Azure AD B2C 和 react-native-app-auth 授权我的应用程序。
当系统浏览器正在启动并且我可以登录时,我正在努力解决的是使用正确的应用程序方案重定向回应用程序。
Android 上大多数基于 Azure 的文档 (像这里、这里和这里)指导我使用签名和方案作为
AndroidManifest.xml
中的活动,以便应用程序可以响应流程。
<activity
android:name="com.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="msauth"
android:host="Enter_the_Package_Name"
android:path="/Enter_the_Signature_Hash" />
</intent-filter>
</activity>
但是
react-native-app-auth
的 React Native 文档(如 here 和 here)说我只是需要在 appAuthRedirectScheme
文件中设置 android/app/build.grandle
。
我不确定哪种方法合适,理论上这应该不难。但是,当我尝试任一方法时,我要么在成功登录后没有得到任何响应(即可能发生重定向,但应用程序没有监听),要么应用程序完全挂起。
关于如何使重定向发挥作用,有明确的指示吗?
我通过
react-native-app-auth
文档阅读
该方案是 OAuth 重定向 URL 的开头,一直到方案分隔符 (:) 字符。例如。如果您的重定向 uri 是 com.myapp://oauth,则 url 方案将为 com.myapp。该方案必须是小写。
这似乎与其他 Azure 文档的工作方式不同,其中方案是包名称。就我而言,我必须将方案更改为
msauth
。
manifestPlaceholders = [appAuthRedirectScheme: 'msauth']
这可行,但这与其他应用程序不会冲突吗?最佳实践表明我应该使包名称唯一,并保持 RedirectUri 唯一。但是如果scheme设置成
msauth
的话,这不会和其他app冲突吗?
手动更改清单菜单中 Azure 自动生成的重定向 URI 很有帮助。
在 UI 上的 JSON 清单中,在
replyUrlsWithType
键下查找 Android 的重定向 URI。
从
msauth://package-name/signature-hash
更改为 package-name://msauth/signature-hash
。单击“保存”按钮保存文件。
build.gradle
文件中,您可以使用您的包名称。
android {
// ...
defaultConfig {
// ...
manifestPlaceholders = [
appAuthRedirectScheme: "package-name"
]
}
// ...
}
我想知道如何使用 Azure AD b2c 登录 - 在移动应用程序的 Azure 应用程序注册中应该重定向 uri。急需请帮忙