Cómo obtener la URL de redirección del control WebView de WinRT

Quiero autenticar una aplicación de Windows 8 a través de OAuth en un servicio. Esto funciona usando el control WebView y navega al usuario con una URL adecuada al servicio donde se lleva a cabo la autenticación.

Si el usuario es autenticado por el servicio, es redirigido a una página de éxito.

Me gustaría obtener información sobre esta redirección para poder iniciar la aplicación automáticamente.

Probé el evento LoadComplete que se activa cuando se carga una página, pero allí solo obtengo el uri de solicitud, pero no el uri de redireccionamiento.

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

¿Alguien tiene una idea de cómo obtener la URL de redireccionamiento, o al menos el contenido de la página (esto podría analizarlo y buscar algo como "genial, estás autenticado")

preguntado el 03 de mayo de 12 a las 22:05

¿Estás redirigiendo a localhost: 8080 (o cualquier otro puerto)? Cuando reciba la solicitud allí, significa que está listo para comenzar. -

3 Respuestas

Hay un mecanismo incorporado para esto que es más seguro para los usuarios (las aplicaciones no pueden espiar contraseñas). Ver agente de autenticación web: http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122

contestado el 04 de mayo de 12 a las 00:05

+1 Otro lado positivo es que la interfaz de usuario es consistente con otras aplicaciones que inician sesión en servicios web. - Patrick

Puede obtener el contenido de la página WebView haciendo algo como esto:

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 ....
}

Respondido 18 Oct 12, 16:10

Puede usar el siguiente método para redirigir a una URL y luego bloquear la redirección adicional.

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

Respondido 19 Abr '18, 03:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.