我尝试根据这些说明https://quizlet.com/api/2.0/docs/authorization-code-flow
的OAuth流程向Quizlet发出帖子请求。我遇到了一个问题,在第2步,我必须使用从服务器生成的令牌发出一个帖子请求,但我没有成功将令牌传递给网址。我知道它是正确生成的,但是我无法将其传入并且没有得到400
响应。
更直接的是,我的问题是,还有另一种方法可以包含grant_type
和code
参数,我试图通过帖子请求中的网址传递这些参数,例如传递它们通过帖子请求的标题?我查看了requests
的文档,但我没有运气。
@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')
答案 0 :(得分:1)
您必须指定所需的标题Authorization
,Content-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