2012-06-27 1 views
5

J'essaie d'utiliser l'API Calendar de Google pour faire la démonstration d'une intégration OAuth2 que nous aurons à faire avec un autre tiers. J'utilise la bibliothèque DotNetOpenAuth et j'ai pu obtenir la redirection initiale vers Google pour l'invite Autoriser/Refuser et récupérer le code d'autorisation.Obtention du jeton d'actualisation OAuth2

Je dois maintenant obtenir le jeton d'accès et le jeton d'actualisation, mais il me semble que je n'ai plus qu'un jeton d'accès, le jeton d'actualisation est nul.

Ceci est ma méthode d'action du contrôleur où Google redirige vers après que l'utilisateur accepte ou refuse:

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

Toutes les idées?

EDIT:

Pour obtenir le code d'autorisation, je configurer le oAuthClient identique à ce que je l'ai fait ci-dessus, et d'utiliser cette méthode:

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

S'il vous plaît modifier votre question pour inclure la façon dont vous soumettez la demande d'autorisation d'origine. –

+0

@AndrewArnott Fait; c'est juste un appel à 'RequestUserAuthorization'. – Andy

+0

Pouvez-vous inclure plus de contexte à votre demande? Par exemple, comment construisez-vous 'oAuthClient' que vous utilisez pour envoyer la requête? –

Répondre

Questions connexes