instagram.bind.InstagramClientError:无法分析响应,无效的JSON

2024-04-28 23:16:44 发布

您现在位置:Python中文网/ 问答频道 /正文

让我自己成为一个简单的Instagram客户端,向他们的API发出经过身份验证的请求。但是,运行它会不断抛出以下错误

Traceback (most recent call last):
  File "request-ig-data.py", line 24, in <module>
   recent_media = api.user_recent_media(user_id=user_id, count=50)
  File "/lib/python2.7/site-packages/instagram/bind.py", line 151, in _call
return method.execute()
  File "/lib/python2.7/site-packages/instagram/bind.py", line 143, in execute
content, next = self._do_api_request(url, method, body, headers)
  File "/lib/python2.7/site-packages/instagram/bind.py", line 99, in _do_api_request
raise InstagramClientError('Unable to parse response, not valid JSON.')
instagram.bind.InstagramClientError: Unable to parse response, not valid JSON.

好吧,所以响应不是JSON(尽管我希望它是Instagram的doc'd reponse格式),但是为什么呢?代码是python instagram的一个非常基本的实现——遵循他们的文档,尝试将响应转换为JSON,但仍然得到相同的错误。代码如下:

from instagram.client import InstagramAPI
import httplib2
import json
import sys

client_id = '[...]'
client_secret = '[...]'
redirect_uri = 'https://mycallback.com'
scope = ''
user_id = '1034466'  # starbucks

api = InstagramAPI(client_id=client_id,client_secret=client_secret,redirect_uri=redirect_uri)
redirect_uri = api.get_authorize_login_url(scope = scope)

print "Visit this page and authorize access in your browser:\n", redirect_uri

code = raw_input("Paste in code in query string after redirect: ").strip()

access_token = api.exchange_code_for_access_token(code)

print "access token:\n", access_token

api = InstagramAPI(access_token=access_token)
recent_media, next = api.user_recent_media(user_id=user_id, count=50)
for media in recent_media:
   print media.text

Tags: inpyclienttokenapiidaccessline
2条回答

明白了。api = client.InstagramAPI(access_token=access_token)应该是api = client.InstagramAPI(access_token=access_token[0]),以传递访问令牌而不是完整对象。

这一行:

access_token = api.exchange_code_for_access_token(code)

最好这样说:

access_token, user_info = api.exchange_code_for_access_token(code)

这将从用户信息中分离出访问令牌。这样你就可以保持这条线不变:

client.InstagramAPI(access_token=access_token)  

相关问题 更多 >