Bienvenido a nuestra página web, ahora hallarás la resolución a lo que estabas buscando.
Solución:
los refresh_token
sólo se proporciona en la primera autorización del usuario. Las autorizaciones posteriores, como las que realiza al probar una integración de OAuth2, no devolverán el refresh_token
otra vez. 🙂
- Vaya a la página que muestra Aplicaciones con acceso a su cuenta: https://myaccount.google.com/u/0/permissions.
- En el menú Aplicaciones de terceros, elija su aplicación.
- Haga clic en Eliminar acceso y luego haga clic en Aceptar para confirmar
- La próxima solicitud de OAuth2 que realice devolverá un
refresh_token
(siempre que también incluya el parámetro de consulta ‘access_type=offline’).
Alternativamente, puede agregar los parámetros de consulta prompt=consent&access_type=offline
a la redirección de OAuth (consulte la página OAuth 2.0 de Google para aplicaciones de servidor web).
Esto le pedirá al usuario que autorice la aplicación nuevamente y siempre devolverá un refresh_token
.
Para obtener el token de actualización, debe agregar ambos approval_prompt=force
y access_type="offline"
Si está utilizando el cliente Java proporcionado por Google, se verá así:
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, getClientSecrets(), scopes)
.build();
AuthorizationCodeRequestUrl authorizationUrl =
flow.newAuthorizationUrl().setRedirectUri(callBackUrl)
.setApprovalPrompt("force")
.setAccessType("offline");
Busqué una larga noche y esto está funcionando:
User-example.php modificado de admin-sdk
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$authUrl = $client->createAuthUrl();
echo "Connect Me!";
luego obtiene el código en la URL de redireccionamiento y la autenticación con el código y obtiene el token de actualización
$client()->authenticate($_GET['code']);
echo $client()->getRefreshToken();
Deberías guardarlo ahora 😉
Cuando se agote el tiempo de espera de su tecla de acceso, simplemente haga
$client->refreshToken($theRefreshTokenYouHadStored);
valoraciones y comentarios
Si guardas algún recelo y disposición de limar nuestro división puedes dejar una acotación y con gusto lo ojearemos.