Saltar al contenido

API de Google Calendar v3: cómo obtener un token de actualización (Python)

Solución:

No sé cómo hacer esto con el cliente Python o la API de calendario (solo estoy usando una biblioteca ruby ​​OAuth2 para acceder a la API de contactos), pero descubrí que necesitaba solicitar acceso “sin conexión” del usuario.

Esto se hace agregando el parámetro “access_type” con el valor “offline” a la URL de autorización (a la que redirige al usuario para que haga clic en “Quiero permitir que esta aplicación acceda a mis datos”).

Si hace esto, obtiene un refresh_token en su respuesta JSON cuando le pide a Google tokens de acceso. De lo contrario, solo obtiene el token de acceso (que es válido por una hora).

Aparentemente, este requisito se agregó recientemente (y puede que no esté bien documentado).

Solía ​​obtener un token de actualización sin tener que obtener un permiso específico “sin conexión”.

Espero que esto te oriente en la dirección correcta.

Entonces, si ya aceptó el consentimiento sin configurar access_type="offline", debe obligar al usuario a dar su consentimiento a su aplicación con acceso sin conexión pasando también approval_prompt="force".

self.flow = OAuth2WebServerFlow(
    client_id=self.client_id,
    client_secret=self.client_secret,
    scope=self.SCOPE,
    user_agent=user_agent,
    redirect_uri='urn:ietf:wg:oauth:2.0:oob',
    access_type="offline", # This is the default
    approval_prompt="force"
)

Luego puede eliminar el indicador de fuerza / configurarlo en auto después de obtener el token de actualización.

Las respuestas parecen estar obsoletas a partir de 2017-06-16.

  • approval_prompt es obsoleto
  • prompt=force no es válido

Aquí hay un ejemplo de trabajo:

from oauth2client.client import OAuth2WebServerFlow

flow = OAuth2WebServerFlow(
    client_id=CLIEN_ID,
    client_secret=CLIENT_SECRET,
    scope=SCOPES,
    redirect_uri='http://localhost/gdrive_auth',
    access_type="offline",
    prompt="consent",
)

print(flow.step1_get_authorize_url())
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *