场景
我正在尝试使用提供的刷新令牌生成 Google OAuth2 访问令牌。刷新令牌是从客户端Javascript SDK中获取的,使用以下答案中提到的离线访问方法:
https://stackoverflow.com/a/49842793/16341841
获得的刷新令牌发送到后端服务器,后端服务器在需要时尝试使用此刷新令牌获取新的访问令牌。 API 端点以及用于相同的请求参数是:
curl --location --request POST 'https://oauth2.googleapis.com/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=<my_client_id> \
--data-urlencode 'client_secret=<my_client_secret>' \
--data-urlencode 'refresh_token=<refresh_token_sent_by_frontend>' \
--data-urlencode 'grant_type=refresh_token'
结果(错误)
我收到以下错误:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
我已经尝试过的
我已经尝试了以下链接中提到的所有适用(实际上是所有)解决方案以及答案中提到的内部链接:
invalid_grant trying to get oAuth token from google
注意事项
我还可能遗漏什么?非常感谢这里的帮助。
答案 0 :(得分:1)
您构建的请求错误。它是一个 url 字符串。
curl \
--request POST \
--data 'client_id=[Application Client Id]&client_secret=[Application Client Secret]&refresh_token=[Refresh token granted by second step]&grant_type=refresh_token' \
https://accounts.google.com/o/oauth2/token