使用google api返回invalid_request刷新令牌

时间:2014-02-27 14:43:16

标签: python rest google-api access-token

我正按照https://developers.google.com/accounts/docs/OAuth2WebServer#refresh

上的说明尝试使用Google API刷新过期的令牌

所以这是我的代码(python)

refresh_token = requests.post(
    'https://accounts.google.com/o/oauth2/token',
     headers={
        'Content-Type': 'application/x-www-form-urlencoded',
     },
     data=json.dumps({
         'client_id': APP_ID,
         'client_secret': APP_SECRET,
         'refresh_token': refresh_token,
         'grant_type': 'refresh_token',
     })
)

但是,我得到了回复:

Status code: 400
{
  "error" : "invalid_request"
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您告诉谷歌服务器,当您的请求实际为json编码时,您的请求是表单编码的。如果你给它一个字典,请求会自动对你的数据进行格式编码,所以请尝试这样做:

refresh_token = requests.post(
    'https://accounts.google.com/o/oauth2/token',
     data={
         'client_id': APP_ID,
         'client_secret': APP_SECRET,
         'refresh_token': refresh_token,
         'grant_type': 'refresh_token',
     }
)