Python请求参数未通过

标签 python flask python-requests

我正在尝试按照这些说明中的 OAuth 流程向 Quizlet 发出发布请求https://quizlet.com/api/2.0/docs/authorization-code-flow。我遇到了一个问题,在第 2 步中,我必须使用从他们的服务器生成的 token 发出发布请求,但我没有成功地将 token 传递到 url。我知道它是正确生成的,但我在传递它时遇到了问题,并且没有得到 400 响应。

更直接地说,我的问题是,是否有另一种方法可以包含我尝试通过帖子请求中的网址传递的 grant_typecode 参数比如通过post请求的header传递它们?我查看了请求的文档,但没有运气。

@app.route('/')
@app.route('/index')
def index():
    code = request.args.get('code')
    state = request.args.get('state')
    print("code is " + code)
    r = requests.post("https://api.quizlet.com/oauth/token?grant_type=authorization_code&code=" + code)

    return render_template('index.html')

最佳答案

您必须指定所需的 header AuthorizationContent-Type

import requests
from requests.auth import _basic_auth_str

client_id = 'YOUR CLIENT ID'
secret = 'YOUR CLIENT SECRET'
code = 'CODE FROM STEP 1'

headers = {
    'Authorization': _basic_auth_str(client_id, secret),
    'Content-Type': 'application/x-www-form-urlencoded'
}
r = requests.post('https://api.quizlet.com/oauth/token?grant_type=authorization_code&code={0}'.format(
    code), headers=headers)

print r.status_code
print r.content

关于Python请求参数未通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062673/

相关文章:

python 3 从json字典中获取特定值

python - pytest 不会使用 mock.patch 引发 HTTPError

python - pandas 取消列表的堆叠

python - 使用curl来POST并更新多个数据

python - Flask 中的 render() 和 render_template() 有什么区别?

python - (Flask) 伪造 request.environ ['REMOTE_USER' ] 用于测试

python - cURL 流作为 python 模块的标准输入

python - 如何将文件存储在 Google Storage 上,但跳过 GAME 部分来获取它们?

python - U-net 低对比度测试图像,预测输出为灰框

python - Python 中索引的工作日数据框行选择