我正在编写一个使用OAuth对用户进行身份验证的Reddit客户端。我想要实现的功能之一是能够同时使用多个帐户。这要求用户在他们想要使用的每个帐户上授权我的客户。我遇到的问题是,如果用户已经在浏览器中登录Reddit,当我弹出浏览器执行身份验证时,它会让他们针对当前登录的用户验证我的客户端。
有没有办法强制用户重新输入凭据?我宁愿不必在我的添加帐户屏幕上添加某种免责声明,该屏幕上写着“请在任何打开的浏览器窗口中注销Reddit”。
我尝试在WebView中打开Reddit登录页面,因此请求被沙箱化,虽然这有效,但它允许用户访问整个登录页面(包括导航到站点上其他位置的所有链接)。我在弹出外部浏览器时并不介意这种体验,但在嵌入式WebView中我真的只想提供一个用户名和密码框以及OAuth验证提示。
注意:我更喜欢嵌入式体验,因为它不会干扰用户现有的浏览器cookie,我只是不喜欢这样的登录页面是多么混乱,我不知道如何防止用户导航远离登录。此外,为了完整性,这是一个UWP应用程序,尽管这个问题在很大程度上取决于技术。
答案 0 :(得分:1)
我遇到的问题是,如果用户已经在浏览器中登录Reddit,当我弹出浏览器执行身份验证时,它会让他们针对当前登录的用户验证我的客户端。
可能是由授权服务器引起的。如果是这样,我们在客户端应用程序中无法执行任何操作。
但是如果它不是服务器问题,在UWP中,有一个WebAuthenticationBroker类可以帮助您授权您的应用程序通过获取令牌从资源服务器访问用户信息。您可以尝试使用该类来实现OAuth授权。如果您可以在代码逻辑中正确管理具有令牌的所有用户,则无需在WebView中使用,以便您可以向多个用户授权您的应用程序。
请参阅Web authentication broker主题和sample了解详情。