使用OAuth 2.0和Python请求检索Yahoo API的访问令牌

时间:2015-06-13 09:28:23

标签: python api oauth python-requests yahoo-api

我正在尝试使用本文档中描述的显式授权流程来检索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

2 个答案:

答案 0 :(得分:2)

将你的身体变量改为dict,即,

body = {
    'grant_type': 'authorization_code',
    'redirect_uri': 'oob',
    'code': '************',
}

无需其他更改。希望它有所帮助。

答案 1 :(得分:0)

问题已经解决了。但即使他们使用正确的字典作为我,其他用户仍然可以得到相同的401错误。问题是link中步骤2中生成的代码只能使用ONCE。这将得到相同的401错误。这花了我一些时间才弄明白。希望这有助于其他人。