google event ejemplo php google-api google-calendar google-api-php-client

php - event - Actualizar tokens con Google API para Google Calendar v3



google calendar php ejemplo (1)

Intento utilizar la API de Google (PHP) para realizar una sincronización diaria entre un calendario del sistema y los calendarios de Google del usuario. Quiero que un usuario del sistema pueda configurar el acceso a su calendario una vez desde el sistema, luego el sistema puede sincronizar los calendarios todos los días a través de un trabajo cron.

Logré hacer funcionar todo el proceso, desde autorizar el acceso hasta sincronizar los calendarios, pero me estoy quedando atrapado con los tiempos de caducidad del token.

La forma en que pensé que funcionaba en v3 era que el antiguo token actuaría como token de actualización. Entonces, una vez que un usuario ha proporcionado la autorización, solo necesito pasar el token antiguo a Google y esto me permitirá ejecutar la sincronización.

Esto parece funcionar, siempre que esté dentro del tiempo de caducidad de 1 hora del token inicial. Una vez que pasa una hora, deja de funcionar y necesito que el usuario autorice el acceso nuevamente.

¿Hay alguna manera de hacer que el usuario autorice el acceso una vez, luego sincronizar los calendarios una vez al día sin que el usuario tenga que autorizar el acceso nuevamente?

¡Gracias!


Bueno, durante su autorización con Google, recibirá un token que expirará en 3600 segundos o una hora y es normal que haya caducado. Por lo tanto, debe usar el token de actualización para obtener un nuevo token de trabajo.

Estos son los pasos que necesita:

$token = $client->getAccessToken(); $authObj = json_decode($token); if(isset($authObj->refresh_token)) { save_refresh_token($authObj->refresh_token); }

Es importante guardar esta refresh_token, luego puede actualizarla con

$client->refreshToken($your_saved_refresh_token);

Y luego configure su nuevo token de acceso a la sesión:

$_SESSION[''access_token''] = $client->getAccessToken();

Para obtener más información, consulte esta pregunta SO .