Ho scritto un app MVC utilizzando Google OAuth2 come indicato qui: https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#web_applicationsScadenza del token di accesso OAuth di Google nell'app MVC?
Ho un problema con accesso scadenza del token. Quando token di accesso scade, ottengo l'eccezione quando si chiama Google API: "Il token di accesso è scaduto, ma non possiamo aggiornare lo"
L'autenticazione iniziale è di due iterazioni meccanismo:
prima iterazione restituisce AuthorizeAsync risultato con credenziali vuota, e popolato RedirectUri:
Così, l'url di autorizzazione creato è questa:
https://accounts.google.com/o/oauth2/auth?access_type=offline&response_type=code&client_id=MYCLIENTID&redirect_uri=http:%2F%2Flocalhost%2FHomepage%2FAuthCallback%2FIndexAsync&scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar https:%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly&state=http:%2F%2Flocalhost%2FHomepage%2F95419199
Nota che tipo_accesso = non in linea un nuovo CD nel t. Quindi dovrei recuperare anche il token di aggiornamento (non succede).
seconda iterazione - ritorni AuthorizeAsync risultato con credenziali popolate e vuoto RedirectUri:
Question1 - è RefreshToken dovrebbe essere nullo in questo momento?
Il risultato è ricordato, dal momento che è definita come statica.
richiesta successiva che viene in - l'azione del calendario che richiede result.Credential chiamare Google Calendar API:
Question2 - se token di accesso scade da quel momento (per il test ho appena impostato ExpiresInSeconds = 0), Chiamo il metodo RefreshTokenAsync, ma restituisce sempre false! Perché? Cosa mi manca qui?
E quale sarebbe il modo corretto per gestire quando RefreshTokenAsync restituisce false? Il comando RedirectResult corrente (result.RedirectUri) avrà esito negativo poiché result.RedirectUri è null.