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
InformationsquelleAutor Andy | 2012-06-27
Schreibe einen Kommentar