Google OAuth 错误缺少必需参数:grant_type

Google OAuth error Required parameter is missing: grant_type

我正在尝试这段代码:

import requests
url_token = 'https://accounts.google.com/o/oauth2/token'
params = {
    'code': request.values.get('code', '', type=str),
    'client_id': app.config['SOCIAL_GOOGLE']['consumer_key'],
    'client_secret': app.config['SOCIAL_GOOGLE']['consumer_secret'],
    'redirect_uri': urllib.quote_plus("https://example.com/google/code"),
    'grant_type': 'authorization_code'
}
out = requests.post(url_token, params=params)

在 Flask 中使用 Python-Request。但我收到错误响应:

ERROR - out={
   "error" : "invalid_request",
   "error_description" : "Required parameter is missing: grant_type"
}

这是标准的 POST 请求。为什么 Google 看不到 grant_type 参数的任何提示?还是误导性的错误信息?

params 用于在 GET 请求中向 URL 添加查询参数,data 用于将数据传递给 POST 请求,因此您应该传递表单 POST参数为:

out = requests.post(url_token, data=params)

查看文档:http://docs.python-requests.org/en/latest/user/quickstart/#more-complicated-post-requests