c# - 获取 OAuth2 刷新 token

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

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

我现在需要获取访问 token 和刷新 token ,但我似乎只取回了一个访问 token ,刷新 token 为空。

这是我的 Controller 操作方法,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);

最佳答案

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

关于c# - 获取 OAuth2 刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231898/

相关文章:

javascript - 在 mvc3 中更改 @Html.TextboxFor 的 onchange 事件的标签文本

c# - NHibernate 抛出 Session 已关闭

.net - 在 Azure 中保护应用程序的客户端 ID 和 key

c# - c# 按下按键动态移动表单

javascript - 如何从 Controller 创建进度条来处理 MVC3 中的长流程

c# - ExecuteReader 可以在 C# 中的 if 条件下工作吗

java - OAuth2 使用本地用户数据库和身份验证保护 Spring Boot REST Api

oauth-2.0 - 使用 OAuth2 将 JHipster 中的前端和 API 服务器分开不起作用

c# - 以编程方式设置属性以从序列化中排除

c# - 使用正确的包 ://URI Format