Expo AuthSession搭配Ping Identity在Edge浏览器登录时自动跳转APP的弹窗消除方案咨询
Expo AuthSession搭配Ping Identity在Edge浏览器登录时自动跳转APP的弹窗消除方案咨询
大家好,最近我们团队在用Expo + React Native开发一款移动端APP,身份认证用的是Ping Identity,现在遇到一个头疼的问题——只有在默认浏览器是Microsoft Edge的时候,登录流程会跳出一个额外的确认弹窗,严重影响了我们想要的无缝登录体验。
先跟大家详细说下问题场景:
- 用户在APP里触发登录,会打开Edge浏览器进入Ping的认证页面
- 输入正确凭证完成认证后,Edge会弹出提示:“oidc_callback wants to open an external app”,给两个选项:「Stay in Microsoft Edge」或者「Open external app」
- 选「Open external app」的话,APP会正常唤起并完成登录;但如果选「Stay in Microsoft Edge」,整个登录流程就卡壳了
- 这个弹窗在Chrome、Safari里完全不会出现,只有Edge有这个问题
我们的目标是:认证在Edge完成后,能自动唤起APP并走完登录流程,不需要用户手动确认这一步。
下面是我们已经尝试过的排查和调整:
- 调整了Ping Identity里的重定向URI配置
- 在不同浏览器、设备上做了测试对比
- 检查了Expo + React Native的Linking相关配置
- 微调了Expo AuthSession里的
showInRecents和createTask参数
这里贴一下我们用到的核心代码:
const [request, response, login] = ExpoAuth.useAuthRequest(config!, discovery!); const initiateAuthenticationProcess = () => { setIsSetupComplete(false); login({ showInRecents: true, createTask: true, }).catch(() => { setIsSetupComplete(true); }); };
这里我们特意把showInRecents设为true,因为如果设为false的话,用户把APP切到后台(比如切换到Ping的验证APP)时,认证会话会丢失,这样设置能保证会话的连续性。但副作用就是在Edge浏览器下会弹出那个烦人的确认框。
现在想请教下社区的各位:
- 有没有人遇到过Expo AuthSession + Edge浏览器的这个弹窗问题?
- 有没有已知的 workaround 能去掉这个额外的确认步骤,让Edge认证完成后自动唤起APP?
非常感谢大家的分享和建议!
内容来源于stack exchange




