Cómo obtener el token sin conexión y el token de actualización y el acceso de actualización automática a la API de Google
Estoy desarrollando una aplicación que accede a las API de Google (comenzando con la API del calendario) utilizando OAuth2 y las bibliotecas de cliente de Google para eso (está en Appengine y GWT BTW).
He implementado miOAuth2Call
Servlet trasero, extendiendo el Google.AbstractAppEngineAuthorizationCodeCallbackServlet
.
Lo tengo funcionando, tengo acceso y puedo ver calendarios, etc., pero tengo dos problemas:
1) No obtengo un token de actualización, a pesar de solicitar explícitamente el acceso sin conexión:
public static GoogleAuthorizationCodeFlow newFlow( String scope ) throws IOException {
GoogleAuthorizationCodeFlow.Builder builder = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT,
JSON_FACTORY,
getClientSecrets(),
Collections.singleton( scope ) );
builder.setCredentialStore( new AppEngineCredentialStore() ).setAccessType("offline");
return builder.build();
}
2) No puedo ver cómo configurar la función de actualización automática. Estas páginas describen los métodos:
Clase credencial.Clase CredentialStoreRefreshListenerPero no puedo ver dónde agregar el escucha de actualización. No hay tal método en elGoogleAuthorizationCodeFlow.Builder
clase, a diferencia de laCredential.Builder
clase
EDITAR Después de depurar más el código, cuando vuelve la credencial (en laonSuccess()
método) parece tener unRefreshListener
establecido ya ... así que tal vez es su defecto, y mi único problema es que no estoy recibiendo unrefresh_token
, a pesar de pedirlo.
¿Tal vez necesites revisar la configuración en la API de Google también?