Android端React Native迁移HTTPS登录重定向至Chrome Custom Tab异常求助
安卓React Native项目HTTPS重定向URL在Chrome Custom Tabs中无法正常回调的问题
我正在React Native安卓项目中,将社交登录的重定向URL从自定义URL协议(myscheme://)迁移到HTTPS协议(https://),计划使用基于Chrome Custom Tabs实现安卓功能的expo-web-browser。
遇到的问题
- 更新后的
https://重定向URL可以在expo-web-browser中正常打开,但openAuthSessionAsync的Promise无法正确resolve,浏览器窗口也不会自动关闭。 - 若直接在默认Chrome浏览器中打开社交登录链接,整个流程能正常运行,但会弹出让用户选择在APP或浏览器中打开链接的提示,这是流程中不希望出现的步骤。
- 我同时测试了
expo-web-browser和react-native-inappbrowser-reborn,结果一致,这让我怀疑要么是AndroidManifest文件配置有误,要么是Custom Tabs本身不支持这种行为。
代码配置
调用openAuthSessionAsync的代码:
WebBrowser.openAuthSessionAsync('social-login-url', 'https://foo.bar/xxx', { preferEphemeralSession: true, // iOS only });
AndroidManifest.xml中的intent-filter配置:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="foo.bar" android:path="/xxx" /> </intent-filter>
预期与实际结果
- 预期:传入
https://重定向地址后,认证完成时Custom Tab自动关闭,用户被重定向至对应的Deep Link。 - 实际:用户停留在Custom Tab中的
https://URL页面,加载了Web应用的内容,无法回到APP。
内容的提问来源于stack exchange,提问作者Mark Gaucher
相关产品推荐
相关产品推荐

