如何使用python中的刷新令牌刷新google中的访问令牌?我有刷新令牌,客户ID和客户机密
我尝试使用以下代码来生成访问令牌(到期后)
params = {
"grant_type": "refresh_token",
"client_id": client_id,
"client_secret": client_secret,
"refresh_token": refresh_token
}
authorization_url = "https://www.googleapis.com/oauth2/v4/token"
r = requests.post(authorization_url, data=params)
print(r.text)
if r.ok:
return r.json()['access_token']
else:
return None
我在回应中遇到这样的错误:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
但是我需要生成访问令牌。
答案 0 :(得分:0)
这是无法正常工作的三个主要原因。我不是Python开发人员,所以无法测试您的代码。
将parms发送为字符串
检查您的参数,确保它们以单个字符串发送,并用&分隔。
Post https://accounts.google.com/o/oauth2/token
client_id={ClientId}&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token
内容类型标题
我还认为您需要将内容类型标头设置为application/x-www-form-urlencoded
之类。
更改端点
如果那不起作用
也请尝试使用https://accounts.google.com/o/oauth2/token
而不是https://www.googleapis.com/oauth2/v4/token
,我记得其中一个有时会出现问题