'授权失败'关于Pinterest OAuth流程

时间:2017-04-19 13:03:38

标签: python oauth python-requests pinterest

在OAuth流程记录here后,我似乎做了一切正确的事情,仍然得到以下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()

导致我在顶部发布错误的回复

1 个答案:

答案 0 :(得分:0)

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

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