setaccesstype secret refreshtoken how google example oauth google-api google-oauth google-oauth2

oauth - secret - refreshtoken api google



¿Qué significa el acceso "offline" en OAuth? (2)

El acceso sin conexión es IMO, es un nombre realmente malo para él, y creo que es un término que solo Google usa no está en el RFC de Oauth, por lo que recuerdo.

¿Qué es el acceso fuera de línea de Google?

Cuando solicita el acceso sin conexión, el servidor de autenticación de Google devuelve un token de actualización. Los tokens de actualización le dan a su aplicación la capacidad de solicitar datos en nombre del usuario cuando el usuario no está presente y delante de su aplicación.

Ejemplo de una aplicación que necesita acceso fuera de línea:

Digamos que tengo una aplicación Super Awesome que descarga sus datos de Google Analytics y los convierte en un buen archivo PDF y se los envía por correo electrónico cada mañana con sus estadísticas. Para que esto funcione, mi aplicación debe tener la capacidad de acceder a sus datos de Google Analytics cuando no esté cerca para darme permiso para hacerlo. Así que la aplicación Super Awesome solicitaría acceso sin conexión y el servidor de autenticación devolvería un token de actualización con ese token de actualización. La aplicación Super awesome puede solicitar un nuevo token de acceso cuando quiera y obtener sus datos de Google Analytics.

Ejemplo de una aplicación que no necesita acceso fuera de línea

Vamos a probar la aplicación menos impresionante que te permite subir archivos a Google Drive. Una aplicación menos impresionante no necesita acceder a su cuenta de Google Drive cuando no está cerca. Solo necesita acceder a ella cuando esté en línea. Entonces, en teoría, no necesitaría acceso sin conexión. pero en la práctica lo hace, todavía recibe un token de actualización para que no tenga que pedirle permiso nuevamente, aquí es donde creo que la denominación es incorrecta.

stuff documentación

Si hay un token de actualización en el intercambio de códigos de autorización, se puede usar para obtener nuevos tokens de acceso en cualquier momento. Esto se denomina acceso sin conexión, porque el usuario no tiene que estar presente en el navegador cuando la aplicación obtiene un nuevo token de acceso.

La verdad sobre el acceso sin conexión

El problema es que, en muchos casos, el servidor de autenticación le devolverá el token de actualización, sin importar lo que no tenga que pedir en realidad por lo que le ofrece. Le da la capacidad de acceder a los datos de los usuarios cuando no están cerca. Los usuarios no saben que puedes acceder a los datos sin que estén allí. (Es solo la biblioteca javascript y creo que la biblioteca PHP que te oculta el RefreshToken pero está ahí)

Ejemplo: puede probar esto con las siguientes instrucciones Google 3 legged Oauth flow

Pero solo publicando

https://accounts.google.com/o/oauth2/token code = {AuthCode} & client_id = {ClientId} .apps.googleusercontent.com & client_secret = {ClientSecret} & redirect_uri = urnf: wiet: wuth: 2.0

Respuesta:

{ "access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4" }

Ahora tengo acceso fuera de línea a los datos de estos usuarios, y nunca les dije que los tendría.

¿Qué significa exactamente la palabra "fuera de línea" con respecto al acceso sin conexión otorgado por un servidor OAuth?

¿Significa que el servidor de recursos devolverá datos sobre el usuario incluso cuando el usuario cierre la sesión de la aplicación de terceros o cuando el usuario cierre la sesión del servidor de recursos OAuth como Facebook o Google o Twitter?


Por diseño, los tokens de acceso devueltos por el flujo de OAuth expiran después de un período de tiempo (1 hora para tokens de acceso de Google), como un mecanismo de seguridad. Esto significa que cualquier aplicación que quiera trabajar con los datos de un usuario necesita que el usuario haya pasado recientemente por el flujo de OAuth, también conocido como estar en línea. Solicitar el acceso sin conexión proporciona a la aplicación un token de actualización que puede usar para generar nuevos tokens de acceso, lo que le permite acceder a los datos del usuario mucho después de que los datos hayan pasado por el flujo de OAuth, también conocido cuando están fuera de línea.

Es necesario obtener acceso sin conexión cuando la aplicación continúa ejecutándose cuando el usuario no está presente. Por ejemplo, si hay algún proceso por lotes nocturno, o si su aplicación responde a eventos externos como notificaciones push. Sin embargo, si solo accede a los datos del usuario mientras el usuario está usando activamente su aplicación, entonces no hay necesidad de acceso sin conexión. Simplemente envíe al usuario a través del flujo de OAuth cada vez que necesite un token de acceso y, si ya ha otorgado acceso a su aplicación, la página de autorización se cerrará instantáneamente, haciendo que el proceso sea casi invisible para el usuario.

Para las API de Google, puede solicitar acceso sin conexión incluyendo el parámetro access_type = fuera de línea en la URL de autorización que presenta a sus usuarios. El acceso sin conexión, y por lo tanto los tokens de actualización, se solicita automáticamente cuando se utiliza el flujo de aplicación instalada .