React native Expo:WebBrowser.openAuthSessionAsync和相关调用即使在浏览器会话过期时也会跳过用户输入
这是一个问题的摘要(它已关闭,但我已要求重新打开): 无论是否使用React native Expo:WebBrowser.openAuthSessionAsync和相关调用即使在浏览器会话过期时也会跳过用户输入,react-native,oauth,salesforce,expo,React Native,Oauth,Salesforce,Expo,这是一个问题的摘要(它已关闭,但我已要求重新打开): 无论是否使用AuthSession.startAsync,此问题都会发生, 中的iOS上的AppAuth.authAsync或WebBrowser.openAuthSessionAsync 本地开发和发布(世博会管理)。我没试过 还没有独立构建 复制步骤 用户按下“登录”按钮,(应用程序调用上述方法之一启动与Salesforce oauth提供商的身份验证会话) 用户成功输入凭据 应用程序通过oauth重定向并将用户返回到我们的应用程序,我们
AuthSession.startAsync
,此问题都会发生,
中的iOS上的AppAuth.authAsync或WebBrowser.openAuthSessionAsync
本地开发和发布(世博会管理)。我没试过
还没有独立构建
复制步骤
WebBrowser.openAuthSessionAsync
实现中的某个原因。我已看到赞成票。我的理解是,这(SFAuthenticationSession)是expo的WebBrowser和上述包装器(AppAuth和AuthSession)用于oauth交互的浏览器。我还看到,它提到它是一次性登录的,这也许可以解释为什么它会保留任何会话数据,并在不直接从用户那里获取凭据的情况下跳转到重新验证的结论,但存储cookie而不验证它似乎没有帮助,这似乎是最终的结果
注释
本质上,这使得用户无法注销我们的应用程序,因为我们无法控制的系统浏览器正在跟踪他们的身份验证,尽管会话值对服务器不再有效
我看到其他人正在寻找从系统浏览器中清除cookie的方法,这可能与此问题有关,但似乎无法以任何方式访问auth会话的浏览器cookie。我们需要找到解决问题的办法
我希望用户能够注销,然后当他们再次登录时,他们应该再次输入他们的凭据。有没有人想到这是怎么可能的?我也遇到了同样的问题,但是使用了
useAuthRequest
hook。我发现它使用了一个名为prompt
的AuthRequestConfig选项,当我将该选项设置为prompt.Login
时,我能够再次获得登录屏幕。我也尝试了该选项,以及select\u account
选项。所有这些都是在登录状态下打开Salesforce应用程序,这比立即重定向回我们的react本机应用程序更糟糕。我也遇到了同样的问题,但是使用了useAuthRequest
hook。我发现它使用了一个名为prompt
的AuthRequestConfig选项,当我将该选项设置为prompt.Login
时,我能够再次获得登录屏幕。我也尝试了该选项,以及select\u account
选项。所有这些都是在登录状态下打开Salesforce应用程序,这比立即重定向回react本机应用程序更糟糕。