【问题标题】:'Authorization Failed' on Pinterest OAuth flowPinterest OAuth 流程上的“授权失败”
【发布时间】:2017-09-15 17:36:31
【问题描述】:

按照 here 记录的 OAuth 流程,我似乎做对了所有事情,但仍然得到以下 json 响应:

{'generated_at': 'Wed, 19 Apr 2017 12:47:47 +0000', 'host': 'devplatform-devapi-prod-0a016efb', 'code': 3, 'status': 'failure', 'message': 'Authorization failed.', 'data': None}

我已经看到 this 发布了关于同一问题的帖子,但我正在使用更新后的文档,一切似乎都是正确的。

我的第一步似乎没问题,因为我得到了一个有效的响应,包括 API 返回的代码。

问题发生在我尝试将代码交换为令牌的第二次调用中 - 然后它失败了

我的第二个电话是这样的:

self.API_BASE = 'https://api.pinterest.com/v1/'
.
.
.
code = request.GET['code']
.
.
.
url = '{base}oauth/token'.format(base=self.API_BASE)
data = {'grant_type': 'authorization_code',
        'client_id': self.client_id,
        'client_secret': self.client_secret,
        'code': code}

response = requests.post(url, data=data).json()

导致我在顶部发布的错误的响应

【问题讨论】:

  • 您是如何获得授权码的?文档中说“要获取您的访问代码,请将您的用户定向到api.pinterest.com/oauth您的代码中没有任何地方为用户打开网络浏览器。
  • 不想发很长的帖子,明明拿到了code,我也验证收到了
  • 试试requests.post(url, params=data)
  • 也没用,同样的反应:/
  • 你试过Session()吗?

标签: python oauth python-requests pinterest


【解决方案1】:

您可能没有将授权代码正确地传递给令牌端点。 code = request.GET['code'] 应该做什么?你能打印出这样一个获取的code 吗?

编辑:从 pinterest 文档来看,他们的令牌端点似乎不符合 OAuth 2.0 RFC6749。令牌端点期望它的参数通过查询字符串传递,而 RFC 声明它们应该作为 application/x-www-form-urlencoded POST 数据传递(就像你做的那样)。 所以使用requests.post(url, params=data).json()

【讨论】:

  • 它的 django,我确实从他们那里取回了代码,检查了一下
  • 例如我现在尝试时得到94162c7bc150af5a
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 2016-10-15
  • 2015-12-28
  • 1970-01-01
相关资源
最近更新 更多