Google OAuth2 .Net HttpPost 请求 access_token 中缺少 refresh_token
Posted
技术标签:
【中文标题】Google OAuth2 .Net HttpPost 请求 access_token 中缺少 refresh_token【英文标题】:refresh_token is missing in Google OAuth2 .Net HttpPost request for access_token 【发布时间】:2021-12-13 06:46:14 【问题描述】:在我使用 .Net HttpPost 的 Google OAuth 请求中缺少 refresh_token 值。
参考:https://developers.google.com/identity/protocols/oauth2/web-server#exchange-authorization-code
我的输入 HTTP 发布请求 -
...google oauth post request details..url - (https://accounts.google.com/o/oauth2/token)...
and the postData - (client_id=<client_id>&client_secret=<client_secret_key>&grant_type=authorization_code&redirect_uri=<redirect_url>&code=<authorization_code>&access_type=offline&prompt=consent&approval_prompt=force)
注意:我有一个关于 access_token 的有效响应。但是,refresh_token 对象值带有空记录。
请帮忙。
我已经查看了这些链接 - Not receiving Google OAuth refresh token
【问题讨论】:
【参考方案1】:将授权代码交换为访问令牌和刷新令牌的调用如下所示。
HTTP POST https://accounts.google.com/o/oauth2/token
code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id=ClientId&client_secret=ClientSecret&redirect_uri=redirectURI&grant_type=authorization_code
您不使用access_type , approval_prompt, prompt
作为授权代码交换的一部分,这些授权代码包含在显示同意屏幕的 HTTP GET 请求中。
如果您在 Google 开发者控制台上创建了 Web 凭据客户端,则可以在此处添加 access_type。
HTTP GET https://accounts.google.com/o/oauth2/auth?client_id=clientid&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code&access_type=offline
如果您有兴趣了解调用是如何建立的,这可能会有所帮助。 Understanding Google OAuth 2.0 with curl
【讨论】:
以下响应对象仅为请求创建 - refresh_token 对象本身丢失! ( "access_token": values, "expires_in": 3599, "scope": url, "token_type": "Bearer", "id_token": "values" ) id_token 是不是 refresh_token? id 令牌是开放的 id connect 而不是 oauth2 看起来只有我用于授权 OAuth 的帐户存在问题。请注意,我的帐户仅用于 Google Play 控制台和 API 访问 Google Play android Developer API。我是否缺少任何权限? 您的客户端 ID 和客户端密码是在这里创建的,对 console.cloud.google.com/apis/dashboard 您创建了哪种类型的客户端? 是的。 OAuth 2.0 并且仅通过 Google Play Android 开发者 API 服务启用。以上是关于Google OAuth2 .Net HttpPost 请求 access_token 中缺少 refresh_token的主要内容,如果未能解决你的问题,请参考以下文章
Google OAuth2 .Net HttpPost 请求 access_token 中缺少 refresh_token
Vaadin 21 Flow + Spring Security OAuth2:找不到'oauth2/authorization/google'的路由