es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Google Drive OAuth2: confuso acerca del URI de devolución de llamada y redireccionamiento.

El escenario es bastante sencillo. Se está desarrollando una aplicación web que permitirá al usuario acceder a su Google Drive para guardar/leer archivos.

Utilizando el ejemplo de inicio rápido de PHP de Google, logro hacer que funcione leyendo la información de secreto del cliente desde el archivo JSON generado por Google, imprime la URL del solicitante, copia y pega eso en un navegador, el cual invoca la página de permisos de Google, y luego somos redirigidos a http://localhost con el código como parámetro GET. Copia/pega el código en la aplicación de demostración de inicio rápido y funciona.

Sin embargo, la experiencia del usuario, especialmente en una tableta/teléfono, es terrible.

Preferiría redirigir a un servidor donde se guarde el código, y la sesión de la aplicación web del usuario que lo invoca pueda consultar este servidor (con credenciales de seguridad adicionales) para obtener el código.

Lo que no puedo entender es cómo obtener el URI de devolución/redirección que Google llama con el código de acceso para incluir un identificador adicional suministrado por nuestra aplicación web que lo invoca, de modo que pueda identificar la respuesta correcta de Google en caso de que tengamos varios usuarios solicitando el código al mismo tiempo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una solución a este problema es incluir un identificador único en el parámetro “state” al construir la URL de autorización. El parámetro “state” se utiliza para mantener el estado del flujo de autenticación y puede ser utilizado para pasar información entre el servidor de autorización y la aplicación cliente.

    Puede generar un identificador único para cada sesión de usuario e incluirlo en el parámetro “state” al construir la URL de autorización. Este identificador debe estar encriptado y firmado para evitar alteraciones.

    Cuando el usuario es redirigido de vuelta a su aplicación, el parámetro “state” es devuelto junto con el código de autorización. Puede utilizar el parámetro “state” para identificar la sesión de usuario correcta y obtener el código de autorización desde su servidor.

    Para implementar esta solución, deberá modificar el código que genera la URL de autorización para incluir el identificador único en el parámetro “state”. También deberá modificar su servidor para almacenar el estado y el código de autorización para cada sesión de usuario, y responder a las solicitudes de la aplicación cliente para obtener el código de autorización.

    Este enfoque mejorará la experiencia del usuario al permitir que el flujo de autorización se lleve a cabo en el servidor sin requerir que el usuario copie y pegue el código de autorización. Además, asegurará que se identifique la sesión de usuario correcta incluso si varios usuarios solicitan autorización al mismo tiempo.

Comments are closed.