google oauth2 C#:没有刷新令牌

时间:2013-08-27 10:24:50

标签: c# oauth-2.0

在我的C#应用​​程序中,我正在尝试获取aouth2访问权限并刷新令牌:

https://developers.google.com/accounts/docs/OAuth2InstalledApp

在阶段:处理响应,当我拨打电话时,我应该得到类似的内容:

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
  "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

但我得到

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
}

因此:缺少refresh_token。我调试了,我确信我点击了api方法: FetchAccessAndRefreshTokens ,但我没有refresh_token。

PS:我使用的是201306 API

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在API中,在OAuth2ProviderForApplications.cs文件中,在GetAuthorizationUrl()方法中,如果您将& approval_prompt = force 添加到字符串,则在第100行:

返回string.Format(“{0}?scope = {1}& state = {2}& redirect_uri = {3}& response_type = {4}&”+           “CLIENT_ID = {5}&安培; ACCESS_TYPE = {6}的&安培; approval_prompt =力

它有效。但这是一个可怕的解决方法,加上它可能会产生apache许可证问题。

如何找到:在google oauth2 playground(https://developers.google.com/oauthplayground/)中设置此参数(approval_prompt = force),如果省略它,则不会提供刷新令牌。