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);
Bearbeiten Sie Ihre Frage so, dass sie die Art und Weise enthält, wie Sie die ursprüngliche Autorisierungsanfrage einreichen. –
@AndrewArnott Fertig; es ist nur ein einziger Aufruf von 'RequestUserAuthorization'. – Andy
Können Sie Ihrer Anfrage mehr Kontext hinzufügen? Zum Beispiel, wie Sie den 'oAuthClient' konstruieren, mit dem Sie die Anfrage senden? –