获取OAuth2刷新令牌

时间:2012-06-27 17:31:52

标签: c# asp.net-mvc-3 oauth-2.0 dotnetopenauth

我正在尝试使用Google的Calendar API来演示我们需要与其他第三方进行的OAuth2集成。我正在使用DotNetOpenAuth库,我已经能够初始重定向到Google以获取允许/拒绝提示并获取授权代码。

我现在需要获取访问令牌和刷新令牌,但我似乎只获得了访问令牌,刷新令牌为空。

这是我的控制器操作方法,Google会在用户接受或拒绝后重定向回来:

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

有什么想法吗?

编辑:

要获取授权代码,我将oAuthClient设置为与上面所做的相同,并使用此方法:

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

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,并通过手工编写HttpRequest和HttpResponse处理来解决我的问题。请参阅以下代码:https://stackoverflow.com/a/11361759/29156