2 puntos por kibua20 2020-07-12 | 2 comentarios | Compartir por WhatsApp

Se explica el método de autenticación con Service account usando JWT (JSON Web Token), uno de los métodos que reciben autenticación OAuth 2.0 para usar Google API, así como la forma de obtener los eventos del calendario de una cuenta de usuario mediante Google Calendar API.

Para usar una Service Account, se debe avanzar en los siguientes 5 pasos.

  1. Crear una Service Account en Google API console:

    • Al crear la Service account, se asignan un Client ID y una Private Key.
  2. Crear un JWT (Json Web Token):

    • Se codifican el Header, el Claim set y la signature con valores base64urlsafe.

    • En el caso de python, es posible generar un string JWT con PyJWT.

  3. Solicitar un Token al servidor de autenticación de Google usando el JWT.

  4. El servidor de Google devuelve un Access Token como respuesta.

  5. Llamar a Google API usando el Access token.

Un punto importante de Google Calendar API es que la cuenta de usuario y la cuenta de servicio son cuentas separadas, por lo que se debe agregar a la cuenta de servicio el permiso de uso compartido en Google Calendar de la cuenta de usuario. La llamada a Google Calendar API puede hacerse con el comando curl o con python requests.

2 comentarios

 
galadbran 2020-07-13

Mmm... si se quisiera aplicar a un servicio real, parece que habría que crear una UX para que el usuario comparta el calendario; ¿será posible?

 
kibua20 2020-07-13

Parece que lo adecuado es un cliente OAuth2 en lugar de JWT, ya que hay que compartir el calendario desde la cuenta del usuario.

Este es un ejemplo de Gmail implementado con OAuth2.

https://kibua20.tistory.com/m/70