6

我正在尝试使用 Google 的日历 API 来演示我们需要与另一个第三方进行的 OAuth2 集成。我正在使用 DotNetOpenAuth 库,并且已经能够将初始重定向到 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);
4

1 回答 1

1

我有一个类似的问题,并通过手动编码 HttpRequest 和 HttpResponse 处理来解决我的问题。参见代码:https ://stackoverflow.com/a/11361759/29156

于 2012-07-06T12:06:10.583 回答