使用刷新令牌刷新Google访问令牌

时间:2019-02-05 08:41:35

标签: python oauth google-api google-drive-api google-oauth

如何使用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"
}

但是我需要生成访问令牌。

1 个答案:

答案 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,我记得其中一个有时会出现问题