2012-06-27 63 views
5

我正在尝试使用Google的Calendar API来演示OAuth2集成,我们需要使用另一个第三方。我正在使用DotNetOpenAuth库,并且我已经能够获得最初重定向到谷歌的允许/拒绝提示并获得授权码。获取OAuth2刷新令牌

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

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

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

请修改您的问题以包括您提交原始授权请求的方式。 –

+0

@AndrewArnott完成;它只是对'RequestUserAuthorization'的一次调用。 – Andy

+0

您是否可以在请求中包含更多上下文?例如,如何构建用于发送请求的'oAuthClient'? –

回答