You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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里的showInRecentscreateTask参数

这里贴一下我们用到的核心代码:

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浏览器下会弹出那个烦人的确认框。

现在想请教下社区的各位:

  1. 有没有人遇到过Expo AuthSession + Edge浏览器的这个弹窗问题?
  2. 有没有已知的 workaround 能去掉这个额外的确认步骤,让Edge认证完成后自动唤起APP?

非常感谢大家的分享和建议!

内容来源于stack exchange

火山引擎 最新活动