2012-06-27 23 views
5

Sto tentando di utilizzare l'API Calendar di Google per provare l'integrazione di OAuth2 che avremo bisogno di fare con un'altra terza parte. Sto utilizzando la libreria DotNetOpenAuth e sono riuscito a ottenere il reindirizzamento iniziale a Google per il prompt Consenti/Rifiuta e ottenere il codice di autorizzazione.Ottenere il token di aggiornamento OAuth2

Ora ho bisogno di ottenere il token di accesso e aggiornare il token, ma mi sembra di ottenere solo un token di accesso, il token di aggiornamento è nullo.

Questo è il mio metodo di azione di controllo in cui Google reindirizza torna a dopo che l'utente accetta o rifiuta:

public ActionResult ProcessResponse(string state, string code, string error) 
{ 
    var oAuthClient = 
    new WebServerClient(
     new AuthorizationServerDescription 
     { 
     TokenEndpoint = new Uri("https://accounts.google.com/o/oauth2/token"), 
     AuthorizationEndpoint = new Uri("https://accounts.google.com/o/oauth2/auth"), 
     ProtocolVersion = ProtocolVersion.V20 
     }, 
     _applicationId, 
     _secret) 
     { 
     AuthorizationTracker = new TokenManager() 
     }; 


    var authState = oAuthClient.ProcessUserAuthorization(); 

    var accessToken = authState.AccessToken; 
    var refreshToken = authState.RefreshToken; 

    return View(new[] { accessToken, refreshToken }); 
} 

Tutte le idee?

EDIT:

Per ottenere il codice di autorizzazione, ho configurato l'oAuthClient in modo identico a quello che ho fatto in precedenza, e utilizzare questo metodo:

oAuthClient.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, returnUrl); 
+0

Si prega di modificare la domanda per includere il modo in cui si invia la richiesta di autorizzazione originale. –

+0

@AndrewArnott Fatto; è solo una chiamata a "RequestUserAuthorization". – Andy

+0

Puoi includere più contesto alla tua richiesta? Ad esempio, come costruisci il 'oAuthClient' che usi per inviare la richiesta? –

risposta

Problemi correlati