我正在尝试使用本文档中描述的显式授权流程来检索Yahoo API的访问令牌: https://developer.yahoo.com/oauth2/guide/flows_authcode
一切顺利,直到第4步:交换访问令牌的授权码
我编写了以下python脚本来检索代码:
import urllib2
import requests
import json
url = 'https://api.login.yahoo.com/oauth2/get_token'
body = "grant_type=authorization_code&redirect_uri=oob&code=************"
headers = {
'Authorization': 'Basic **************',
'Content-Type': 'application/json'
}
r = requests.post(url, data=body, headers=headers)
print r
注意:我用" ****"
替换了敏感数据现在,当我执行脚本时,我只能得到" 401"错误信息。
我100%确定登录凭据没问题,所以它似乎与我提出请求的方式有关。这也是我第一次使用"请求"在python中。
如果你能给我一些关于代码的反馈,以及我是否正确传递了标题和正文信息,那就太棒了。我特别不确定身体的流逝。该文档仅说明以下内容:
示例请求正文:grant_type = authorization_code& redirect_uri = https%3A%2F%2Fwww.example.com& code = abcdef
答案 0 :(得分:2)
将你的身体变量改为dict,即,
body = {
'grant_type': 'authorization_code',
'redirect_uri': 'oob',
'code': '************',
}
无需其他更改。希望它有所帮助。
答案 1 :(得分:0)
问题已经解决了。但即使他们使用正确的字典作为我,其他用户仍然可以得到相同的401错误。问题是link中步骤2中生成的代码只能使用ONCE。这将得到相同的401错误。这花了我一些时间才弄明白。希望这有助于其他人。