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

有任何想法吗?

4

1 回答 1

1

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

return string.Format("{0}?scope={1}&state={2}&redirect_uri={3}&response_type={4}&" + "client_id={5}&access_type={6} &approval_prompt=force "

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

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

于 2013-08-27T13:03:32.553 回答