(ASP.Net) google oauth2 que devuelve el token después del hash en lugar de en una cadena de consulta

Tengo un proyecto que requiere una aplicación ASP.Net para usar las credenciales de Google, por lo que la autorización está en oauth 2.0.

Formé una solicitud válida de autorización para las API de Google, pero la respuesta (y el token con ella) se devuelve después de un carácter hash '#'. Más o menos como:

[enlace http de muestra:] myredirecturi.com/oauthcallback#token=thetokenvalue...

Lo que esperaba era que tuviera el formato de una cadena de consulta, es decir, después de un signo de interrogación '?':

[enlace http de muestra:] myredirecturi.com/oauthcallback?token=thetokenvalue...

La razón por la que tengo problemas con esto es que no puedo hacer referencia al token en ASP.net del lado del servidor.

Para llamar a esta solicitud, básicamente lo que estoy haciendo es hacer un Response.redirect a la URL de Google, pero parece que necesito una respuesta del lado del cliente.

Entonces, mi pregunta es, ¿cómo hago para que Google responda en una cadena de consulta?

Si ayuda, esto es en lo que estoy basando la mayor parte de mi trabajo: https://developers.google.com/accounts/docs/OAuth2Login

Gracias.

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

1 Respuestas

En su URL de solicitud de autenticación, ¿está configurando response_type=token? Eso haría que el servidor devolviera un token de acceso en el fragmento. Este es el flujo del lado del cliente que se describe aquí: https://developers.google.com/accounts/docs/OAuth2UserAgent

Si está realizando OAuth en un servidor web (y parece que lo está haciendo), debe usar el flujo del servidor web que se describe aquí: https://developers.google.com/accounts/docs/OAuth2WebServer -- tu específicas response_type=code lo que dará como resultado un código de autorización que puede intercambiar por un token de actualización y un token de acceso en una solicitud posterior.

contestado el 22 de mayo de 12 a las 16:05

Sí, estoy usando response_type=token. Y estoy siguiendo el enlace que enviaste para el flujo de WebServer. Como dije, llego allí usando un Response.Redirect (URL de Google). Pero por alguna razón, la respuesta tiene el token después de un hash, en lugar de un formato de cadena de consulta: od.chris

El enlace del servidor web menciona response_type=codeno, token. Cuando se usa el flujo del lado del cliente (también conocido como concesión implícita), es conforme con la especificación para especificar el token en el fragmento, no en la cadena de consulta: tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.2 -- si está realizando solicitudes de OAuth y necesita obtener el token en su servidor, debe usar el flujo del servidor web. - Jason Hall

oh wow, me lo perdí por completo, lo copié del flujo del lado del cliente. Entonces, lo cambié a response_type=code y ahora responde con una cadena de consulta. Gracias Señor. - od.chris

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