我正在尝试使用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);
答案 0 :(得分:1)
我遇到了类似的问题,并通过手工编写HttpRequest和HttpResponse处理来解决我的问题。请参阅以下代码:https://stackoverflow.com/a/11361759/29156