In genere, il meccanismo di Google OAuth2.0 funziona benissimo.Comportamento strano del token OAuth2.0 (Credenziali non valide 401)
- L'utente conferma il permesso di accedere all'account Google con ambiti selezionati.
- Il token di aggiornamento viene recuperato e salvato nella memoria di lunga durata.
- Ogni token di accesso necessario (se il token di accesso è scaduto) viene recuperato e utilizzato per accedere alle API.
ma a volte (così lontano solo due volte per più di 6 mesi) ho sperimentato un comportamento strano:
Richieste alle API di Google ritorno credenziali non valide (401) errore. L'aggiornamento del token di accesso (utilizzando il token di aggiornamento memorizzato) non aiuta.
Ecco un output strutturato Ho durante il test di questo numero:
+ ------------------------------------------------------------------------- + | 1.TRYING TO REFRESH THE TOKEN. | | 2.DONE REFRESHING THE TOKEN. | + ------------------------------------------------------------------------- + | access: **************************************************** | | refresh: ********************************************* | | expires: 3600 | | created: 2013-07-23 13:12:36 | + ------------------------------------------------------------------------- +
Ho anche provato a verificare il token di accesso "fresco" per l'invio di richieste di https://www.googleapis.com/oauth2/v1/tokeninfo
+ ------------------------------------------------------------------------- + | 1. TRYING TO CHECK THE TOKEN . | | 2. DONE CHECKING THE TOKEN THE TOKEN. | + ------------------------------------------------------------------------- + | issued_to: ************.apps.googleusercontent.com | | audience: ************.apps.googleusercontent.com | | user_id: ************ | | expires_in: 3600 | | email: **********@gmail.com | | verified_email: 1 | | access_type: offline | | scopes:: | + ------------------------------------------------------------------------- + | https://www.googleapis.com/auth/userinfo.email | | https://www.googleapis.com/auth/userinfo.profile | | https://www.googleapis.com/auth/plus.me | | https://www.googleapis.com/auth/drive | + ------------------------------------------------------------------------- +
Ma quando provo ad accedere al feed drive la risposta è:
Error calling GET https://www.googleapis.com/drive/v2/files (401) Invalid Credentials domain: global reason: authError message: Invalid Credentials locationType: header location: Authorization
Abbiamo anche riscontrato lo stesso problema con i calendari. Quindi:
- Il token era valido prima (tutto funzionava).
- Il token di aggiornamento funziona ancora.
- La richiesta di un feed risponde con l'errore "Credenziali non valide".
- Tutti gli altri token funzionano ancora bene, il che significa che il codice è valido.
In genere quando viene revocato il token, viene restituito un errore "invalid_grant" quando si tenta di aggiornare il token.
Domande
- quello che può essere il motivo di questo comportamento? Se il token di aggiornamento è stato revocato o non è più valido in altro modo, la richiesta di un nuovo token di accesso potrebbe produrre un errore?
- C'è un modo per convalidare il token di aggiornamento?
Ho lo stesso comportamento strano dopo molte richieste successive. – ageorgios