Google oauth2 funciona con un código de tiempo generado desde Android pero no funciona para el código generado desde JS SDK
Estoy intentando autenticar al usuario usando oauth2 api de Google. Hay 2 plataformas, Android y Web. Para los nuevos usuarios, busco el código de autenticación de una sola vez en el cliente y lo envío al servidor en ambas plataformas. Una vez que el servidor recibe el código, se está recuperando el token de acceso y después de eso, los detalles del usuario. El servidor puede recuperar el token del código de autenticación de una sola vez enviado desde el dispositivo Android, pero está fallando para el código enviado desde Web.
Este es mi fragmento de código en JS para obtener código de autenticación de una sola vez.
- Google Plus SignIn / oAuth2 - lanzamiento del lado del servidor TokenResponseException: 401 no autorizado
- GoogleAuthException Fuente desconocida
- Este ID de cliente es globalmente único y ya está en uso
- Uso de Google OAuth 2 en dispositivos incrustados basados en Android
- Android: inicia sesión a través de Google más "Se ha producido un error interno"
gauth2.grantOfflineAccess({ 'scope': 'profile email', 'redirect_uri': 'postmessage' }).then(function(e){ if(!e){ // Error } else{ console.log('Auth code: '+e.code); } });
En el servidor, esta es la solicitud POST que estoy haciendo para recuperar el token de un código de tiempo.
post_data = {'code': one_time_code, 'client_id': settings.GOOGLE_OAUTH2_CLIENT_ID, 'client_secret': settings.GOOGLE_OAUTH2_CLIENT_SECRET, 'grant_type': 'authorization_code'} req = urllib2.Request("https://www.googleapis.com/oauth2/v3/token", data=urllib.urlencode(post_data), headers={'User-Agent': 'Mozilla/5.0'}) req.get_method = lambda: 'POST' res = urllib2.urlopen(req) if res.code == 200: print "response 200 : " else: print "Access Token Validation Return Code: ", res.code
Esta llamada de servicio web devuelve 200 y token cuando se genera el código de autenticación de Android. Cuando se envía desde la web, el mismo método arroja el siguiente error ..
Error: 400, solicitud no válida; Falta el parámetro 'redirect_uri'
En este caso, no necesito enviar ningún redirect_uri, porque estoy leyendo la respuesta allí mismo. Pero todavía intenté fijar un valor vacío y también intentado fijarlo a un cierto valor que coincida exactamente con uno de los valores en consola de los reveladores de google. En ese caso, todavía estoy recibiendo ..
Error: 400, solicitud no válida; Redirect_uri no coincide.
No puedo conseguir mi cabeza alrededor del hecho de que esta llamada del servicio de la tela está trabajando perfectamente para los códigos androides y no para los códigos de la tela. Tenga en cuenta que los ámbitos son diferentes para la aplicación de Android y la aplicación web. Pero aún así, esto parece ser un error fundamental. Cualquier ayuda sería apreciada.
- Error de Google Api y Android Oauth INVALID_AUDIENCE
- Cómo manejar el error redirect_uri_mismatch cuando la aplicación Android obtiene acceso sin conexión para el back-end de la Web?
- Error de GLS: INVALID_AUDIENCE en los puntos finales de la nube de google
- Acceso a la API de Gmail mediante Android
- ¿Cómo puedo llegar a la información de calendario de los usuarios en el servidor?
- Autenticación de su cliente en Puntos de extremo de Cloud sin una cuenta de Google
- No se puede obtener el código de autorización con el inicio de sesión de Google+ para Android: INVALID_SCOPE
- Obtención de un código de autorización OAuth2 que se puede compartir con un servidor
- Realidad Aumentada – Mapeando GPS a OpenGL
- Cree una conexión VPN L2TP / IPSec mediante programación en Android