【问题标题】:google oauth2 C#: no refresh tokengoogle oauth2 C#:没有刷新令牌
【发布时间】:2013-08-30 01:12:12
【问题描述】:

在我的 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

有什么想法吗?

【问题讨论】:

标签: c# oauth-2.0


【解决方案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 playground (https://developers.google.com/oauthplayground/) 中设置了此参数 (approval_prompt=force),如果您省略它,它不会提供刷新令牌。

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 2020-02-21
    • 2021-08-27
    • 2022-06-19
    • 2014-08-12
    • 2017-04-20
    • 1970-01-01
    • 2018-02-27
    • 2017-05-12
    相关资源
    最近更新 更多