【问题标题】:Howto get the RedirectURL from WinRT WebView control如何从 WinRT WebView 控件获取重定向 URL
【发布时间】:2018-04-19 10:50:17
【问题描述】:

我想通过服务上的 OAuth 对 Windows 8 应用程序进行身份验证。 这通过使用 WebView 控件并使用正确的 URL 将用户导航到进行身份验证的服务来工作。

如果用户通过了服务的身份验证,他将被重定向到成功页面。

我想获取有关此重定向的信息,以便我可以自动启动应用程序。

我尝试了加载页面时触发的 LoadComplete 事件,但我只得到请求 uri,而不是重定向 uri。

webView.LoadCompleted += webView_LoadCompleted;
webView.Navigate(new Uri("service uri));

有没有人知道如何获取重定向 url,或者至少是页面内容(我可以解析并查找类似“太好了,您已通过身份验证”之类的内容)

【问题讨论】:

  • 您是否重定向到localhost:8080(或任何其他端口)?当您在那里收到请求时,这意味着您已经准备好出发了。

标签: c# webview windows-runtime winrt-xaml


【解决方案1】:

为此有一个内置机制,对用户来说更安全(应用无法窥探密码)。请参阅 Web 身份验证代理:http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122

【讨论】:

  • +1 另一个优点是 UI 与登录 Web 服务的其他应用程序一致。
【解决方案2】:

您可以通过以下方式获取 WebView 页面内容:

private void webView_LoadCompleted_1(object sender, NavigationEventArgs e)
{
    WebView webView = sender as WebView;
    string html = webView.InvokeScript("eval", new string[] {"document.documentElement.outerHTML;"});

    // Here you can parse html ....
}

【讨论】:

    【解决方案3】:

    您可以使用以下方法,向上重定向到一个 URL,然后阻止进一步的重定向。

    WebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
    {
        var url = args.Uri.ToString();
        if(url == "")
            args.Cancel = true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 2011-01-18
      • 2013-02-24
      • 2012-08-18
      • 2016-12-11
      • 1970-01-01
      • 2011-03-22
      • 2015-07-09
      相关资源
      最近更新 更多