2017-04-19 28 views
0

“失败的授权”继OAuth的流程记录here我似乎做的一切权利,仍然可以得到以下JSON响应:Pinterest上的OAuth流

{'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() 

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

+0

您是如何获得授权码的?该文件说*“要获取您的访问代码,请将您的用户指向https://api.pinterest.com/oauth/"*您的代码中没有任何地方是为用户打开一个webbrowser。 –

+0

我不想做一个很长的帖子,显然我得到的代码,我也验证了我收到它 – bluesummers

+0

尝试'requests.post(url,params = data)' –

回答

0

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

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

+0

它的django,我从他们那里得到的代码,检查 – bluesummers

+0

例如,当我现在尝试时,我得到了'94162c7bc150af5a' – bluesummers