2012-06-27 18 views
5

Estoy intentando utilizar la API de Google Calendar para realizar una demostración de una integración de OAuth2 que tendremos que hacer con otro tercero. Estoy usando la biblioteca DotNetOpenAuth, y he podido obtener el redireccionamiento inicial a Google para el aviso Permitir/Denegar y recuperar el código de autorización.Obtención del token de actualización de OAuth2

Ahora necesito obtener el token de acceso y el token de actualización, pero parece que recibo un token de acceso, el token de actualización es nulo.

Este es mi método de acción del controlador en la que Google redirige de nuevo a cuando el usuario lo acepta o se niega:

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 }); 
} 

¿Alguna idea?

EDIT:

Para obtener el código de autorización, I fijó la oAuthClient forma idéntica a lo que hice anteriormente, y utilizar este método:

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

Modifique su pregunta para incluir la forma en que envía la solicitud de autorización original. –

+0

@AndrewArnott Hecho; es solo una llamada a 'RequestUserAuthorization'. – Andy

+0

¿Puede incluir más contexto en su solicitud? Por ejemplo, ¿cómo construyes el 'oAuthClient' que usas para enviar la solicitud? –

Respuesta

Cuestiones relacionadas