2012-03-21 19 views
16

Ok, esta pregunta se ha realizado antes del here. En la respuesta/respuesta a la pregunta, el usuario le dice que almacene el refresh_token en la aplicación (sesión y no db, aunque no importa dónde lo almacene). Después de revisar la documentación en Google, parece que el access_token tiene una fecha de vencimiento luego de la cual ya no es válida. Ahora, podríamos actualizar automáticamente el token en cada intervalo fijo o si el servicio devuelve un error de token no válido, lo que prolonga la vida útil del token, pero por alguna razón, este proceso manual se siente un poco raro. Mi pregunta es:Cómo automatizar el inicio de sesión en la API de Google para obtener el token OAuth 2.0 para acceder a la cuenta de usuario conocida

  • ¿Es esta la forma más efectiva (/ generalmente aceptada) de acceder a los datos de calendario/aplicación de Google para una cuenta de usuario conocida iniciando sesión manualmente y persistiendo el token en la aplicación? ¿O hay otro mecanismo que nos permite iniciar sesión programáticamente en esta cuenta de usuario y seguir los pasos de OAuth?

Respuesta

25

En mi solicitud, el flujo es de esta manera:

  1. Si hay access_token definido, redirigir al usuario a la página de Google en que concedan acceso a la aplicación acceder a sus datos de Google. Esto devuelve un código de autorización a su aplicación.
  2. Utilice el código de autorización para obtener un access_token y refresh_token. También debe guardar el valor expires_in devuelto, que le indica cuándo expira el access_token y ya no se puede usar.
  3. Cuando necesite acceder a la API, puede verificar su DB si el access_token ha caducado; de ser así, use el refresh_token para obtener un nuevo access_token antes de acceder a la API.

No he corrido ningún problema al hacerlo de esta manera: en lo que al usuario se refiere, solo necesitan otorgar acceso una vez, luego la aplicación se encarga de la autenticación a partir de ahí.

Eso debería resolver su problema, ya que la aplicación programáticamente se vuelve a autenticar en función del usuario que inicialmente otorga el acceso a su aplicación, y no necesita hacer nada manualmente. De hecho, no estoy seguro de que haya otra forma de hacerlo, porque para volver a realizar el proceso OAuth, el usuario debe estar sentado frente al dispositivo para otorgar acceso de forma manual. Ese es el punto de persistir el access_token y refresh_token en su base de datos.

+0

@mattewh ¿Podría ayudarme con http://stackoverflow.com/questions/24894789/google-oauth-and-owin-how-to-renew-the-access-token-using-the-refresh-token –

+3

Si tiene que tener una interacción del usuario que no esté automatizada. –

+0

@KeithTyler OAuth depende del consentimiento del usuario al menos una vez, después de eso no se requiere más interacción. –

Cuestiones relacionadas