【问题标题】:Retrieve access token for Yahoo API using OAuth 2.0 and Python requests使用 OAuth 2.0 和 Python 请求检索 Yahoo API 的访问令牌
【发布时间】:2015-08-29 06:59:22
【问题描述】:

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

【问题讨论】:

  • 我的回答对你有用吗?

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


【解决方案1】:

将你的 body 变量更改为 dict,即,

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

无需进行其他更改。希望对您有所帮助。

【讨论】:

  • 非常感谢,这就是问题所在!
  • 没问题。很高兴它有帮助。
【解决方案2】:

棘手的问题已经解决了。但是,即使其他用户使用正确的字典,也可能会出现相同的 401 错误。问题是link中第2步生成的代码只能使用ONCE。这将得到相同的 401 错误。这花了我一些时间来弄清楚。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 2012-11-06
    • 2015-05-30
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2012-09-29
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多