Immer OAuth2 refresh token
Ich versuche, die Google-Kalender-API demo eine OAuth2-integration, die wir brauchen, zu tun mit einem anderen Dritten. Ich bin mit dem DotNetOpenAuth Bibliothek, und ich konnte auch schon die erste Umleitung zu Google Zulassen /Verweigern-Aufforderung und Holen Sie sich den Autorisierungs-code zurück.
Ich jetzt brauchen, um das access token und refresh token, aber ich scheinen, um ein Zugriffstoken zurück, refresh-token ist null.
Dies ist meine controller-action-Methode, wo die Google-Umleitungen wieder zu, nachdem der Benutzer Akzeptiert oder Leugnet:
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:
Bekommen, den Authorisierungs-code, richte ich die oAuthClient identisch zu dem, was ich Tat, oben, und verwenden Sie diese Methode:
oAuthClient.RequestUserAuthorization(new[] { "https://www.googleapis.com/auth/calendar" }, returnUrl);
- Bitte Bearbeiten Sie die Frage mit einschließen, die Art und Weise, die Sie senden Sie das original Authorisierungs-Anfrage.
- Getan; es nur einen einzigen Aufruf
RequestUserAuthorization
. - Können Sie mehr Kontext zu Ihrer Anfrage? Zum Beispiel, wie Sie konstruieren die
oAuthClient
, die Sie verwenden, um die Anfrage zu senden? - Holen Sie sich den Autorisierungs-code, richte ich die oAuthClient identisch zu dem, was ich Tat, oben"
- Ich weiß, das ist eine sehr alte Frage, aber weißt du, welche version von dotnetopenauth, die Sie verwenden. Meine Optionen für die Protokoll-version sind nur V10 V10a
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem und gelöst mine von hand-Codierung des HttpRequest-und HttpResponse-handling. Siehe Kodex unter: https://stackoverflow.com/a/11361759/29156