我已经搜索了几个小时,找不到解决此问题的任何方法。
我正在开发一个UWP App,我有一个WebView
进入网站(用户进行身份验证),我应该能够在他登录后获得access_token
。
是否可以从页面获取响应标头?
还是我必须手动做所有事情(创建HttpClient
,发送带有登录信息的POST,并以这种方式获取标头响应?)
答案 0 :(得分:1)
最重要的是,最新指南是,不应在Web视图内进行身份验证,现代方法是打开外部浏览器窗口,在此用户进行身份验证,然后使用自定义URI方案重定向到应用程序。有关此here on SO的详细信息,请参见。
现在,不幸的答案是WebView
没有提供访问HTTP响应及其标头的内置方法。这是已请求的(例如,参见Martin Suchan的this blog post),但到目前为止尚未实现。如果您可以控制网页,则可以将身份验证信息存储在可访问的cookie中。即使在这里注入自定义JavaScript也无济于事,因为如果您在JS中启动AJAX请求,则可以获取HTTP标头,但无法获取已加载页面的标头。
如以上评论中所述,更好的解决方案是使用HttpClient
手动编写登录代码,或者查看服务是否支持正确的OAuth2 / OpenID Connect流,在这种情况下,您可以使用library like IdentityModel.OidcClient2
可以为您处理大部分繁重的工作。
您还可以使用内置的WebAuthenticationBroker
,请参阅docs here。