我正在尝试使用 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/