2014-01-22 3 views
6

자신의 API에 인증 된 요청을하기위한 간단한 Instagram 클라이언트를 만들었습니다. 그러나, 다음과 같은 오류instagram.bind.InstagramClientError : 유효한 JSON이 아닌 응답을 구문 분석 할 수 없습니다.

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. 

확인을 던지는 계속 실행 해 응답이,하지만 왜 (나는 그 인스 타 그램의 doc'd의 reponse 형식의 주어질 기대할 수 있다는 사실에도 불구하고) JSON 아닌가요? 코드는 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 

답변

2

알아 냈습니다. api = client.InstagramAPI(access_token=access_token)은 전체 개체가 아닌 액세스 토큰을 전달하려면 api = client.InstagramAPI(access_token=access_token[0])이어야합니다.

4

이 줄 :

access_token = api.exchange_code_for_access_token(code) 

이 방법으로 더 나은 넣어인가

:

access_token, user_info = api.exchange_code_for_access_token(code) 

사용자 정보의 액세스 토큰을 나눌 것입니다. 같은이 줄을 유지할 수 방법 :

나는 또한주의해야한다
+3

, 나는이 같은 오류가 발생했습니다,하지만 난 검색을 기반으로 할 수 있습니다 사용자 이름이 아닌 사용자 ID를 (사용하기 때문에 그것이 실현

client.InstagramAPI(access_token=access_token) 
username = user_search (user = api.user_search ('username') [0] .id'). – bshur2008

+0

bshur2008은 완전히 정확합니다. 사용자 ID가 아닌 사용자 이름도 보내고있었습니다. – LittleBobbyTables

관련 문제