2012-06-27 10 views
5

Ich versuche, die Google-Kalender-API zu verwenden, um eine OAuth2-Integration zu demontieren, die wir mit einem anderen Drittanbieter durchführen müssen. Ich verwende die DotNetOpenAuth-Bibliothek und konnte die erste Weiterleitung an Google für die Eingabeaufforderung "Erlauben/Verweigern" abrufen und den Autorisierungscode abrufen.OAuth2-Aktualisierungstoken abrufen

Ich muss jetzt das Zugriffstoken und Aktualisierungstoken abrufen, aber ich schein nur ein Zugriffstoken zurück zu erhalten, Aktualisierungstoken ist null.

Dies ist meine Controller-Aktion Methode, bei Google zu Umleitungen zurück, nachdem der Benutzer akzeptiert oder dementiert:

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

Irgendwelche Ideen?

EDIT:

den Autorisierungscode zu erhalten, ich Setup die oAuthClient identisch zu dem, was ich oben tat, und diese Methode verwenden:

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

Bearbeiten Sie Ihre Frage so, dass sie die Art und Weise enthält, wie Sie die ursprüngliche Autorisierungsanfrage einreichen. –

+0

@AndrewArnott Fertig; es ist nur ein einziger Aufruf von 'RequestUserAuthorization'. – Andy

+0

Können Sie Ihrer Anfrage mehr Kontext hinzufügen? Zum Beispiel, wie Sie den 'oAuthClient' konstruieren, mit dem Sie die Anfrage senden? –

Antwort