Google Sign-in 2FA验证跳转异常求助:部分Android用户完成验证后直接返回App陷入循环
Google Sign-in 2FA验证跳转异常求助:部分Android用户完成验证后直接返回App陷入循环
各位大佬好,我现在碰到一个头疼的问题,想请大家帮忙分析下:
我在基于Expo的React Native移动端App里用Google Sign-in做用户认证,目前Android端有小部分用户遇到了跳转异常的问题,具体情况如下:
当前异常流程
- 用户点击「用Google登录」按钮
- 通过
WebBrowser.openAuthSessionAsync打开安全浏览器(Android端使用ChromeCustomTabs),跳转至我们的认证服务器(请求里携带了redirect-uri参数) - 服务器引导用户进入Google认证流程,同时把redirect-uri嵌入到OAuth的state属性中
- 用户输入账号密码完成登录,触发2FA验证(要么在Gmail应用内,要么是系统原生弹窗)
- 用户确认2FA后,没有回到之前的认证浏览器标签页,直接跳转回了App
- App此时没有任何响应,用户再次点击登录按钮,浏览器会被重新打开,陷入循环
正常预期流程(大部分用户能正常走通)
- 用户完成2FA验证后,跳转回认证浏览器标签页
- 浏览器再跳转至我们服务器的回调地址
- 服务器验证用户数据,按需创建账号,生成JWT,提取并验证redirect-uri的有效性
- 通过Deep Link跳转回App并携带Token
WebBrowser.openAuthSessionAsync识别到Deep Link,完成认证并自动关闭浏览器
现在的困境是,这个问题只在一小部分Android用户身上出现,Expo和服务器端都没有捕获到任何错误日志,我实在摸不清到底是流程里哪一环出了问题。想请教大家:
- 有没有可能的原因导致这种跳转异常?
- 有没有办法配置Gmail/系统2FA验证后的跳转目标?
补充说明:我们选择通过浏览器走认证流程,是希望由服务器统一处理认证逻辑,而且这套系统也同时复用给了Web端。
备注:内容来源于stack exchange,提问作者Eli




