2014-03-19 78 views
1

我使用Instagram的API,以获取用户信息Instagram的API错误

api = InstagramAPI(access_token=access_token) 
profile = api.user(user_id="kallaucyahoocojp") # I try to put output data to profile variable here 

而且我得到下面的错误:

DownloadError: Unable to fetch URL: https://api.instagram.com/v1/users/kallaucyahoocojp.json?access_token=(u'1191812153.f78cd79.d2d99595c79d4c23a7994d85ea0d412c', {u'username': u'kallaucyahoocojp', u'bio': u'\u30c4\u30a4\u30c3\u30bf\u30d5\u30a9\u30ed\u30ef\u30fc\u5897\u52a0\u30b5\u30fc\u30d3\u30b9', u'website': u'http://twitter\u30d5\u30a9\u30ed\u30ef\u30fc.jp', u'profile_picture': u'http://images.ak.instagram.com/profiles/anonymousUser.jpg', u'full_name': u'Kallauc', u'id': u'1191812153'}) 

任何人可以帮助我解决这个问题?

回答

3

您需要传递基于数字的用户标识,而不是用户名。例如,强似kallaucyahoocojp,你可能会通过1234如果T

下面是如何获得ID,如果你没有的话:

  1. 使用此endpoint的Instagram的用户ID进行搜索。在Python API:

    api.user_search(q="kallaucyahoocojp", count=100) 
    
  2. 检查每个用户名确切的字符串匹配的结果,同时通过迭代结果(调用.lower(),以确保忽略潜在问题的情况下)。

  3. 如果在结果的第一页中找不到用户,请使用返回的最大ID调用下一页。

  4. 从匹配的用户搜索结果中返回用户id对象,然后用数字ID再次调用您的原始函数。

一对夫妇的非常重要的注意事项:

  1. 请注意,我用的100计数您可以选择任意数量的称为搜索功能的用户,但相比其它SO上岗,第一个用户并不总是您想要搜索的用户。搜索可以并且将匹配部分,并不总是首先根据精确匹配。我怎么知道?我有生产Instagram应用程序。我将有资格说,通常结果是在前2-3场比赛。决定什么更便宜;重复的API调用可使您更接近极限,或者1次大型批量调用,您肯定可以获得所有结果。

  2. python Instagram API上次我查了一个可怕的工作返回寻呼信息。你实际上得到了分页URL,它违背了python API本身的目的来获得额外的页面。你的选项是使用urlparse或类似的东西从URL中提取下一个id参数,或者修复API以按照json(我已经完成)作为对象返回分页数据。接下来发生的事情是API本身放弃了json的一部分,只给你那些通常不需要/不需要的URL。

在您的例子,这里的搜索响应:

{ 
    "meta": { 
    "code": 200 
    }, 
    "data": [ 
    { 
     "username": "kallaucyahoocojp", 
     "bio": "ツイッタフォロワー増加サービス", 
     "website": "http://twitterフォロワー.jp", 
     "profile_picture": "http://images.ak.instagram.com/profiles/anonymousUser.jpg", 
     "full_name": "Kallauc", 
     "id": "1191812153" 
    } 
    ] 
} 

修订您的来电:

api = InstagramAPI(access_token=access_token) 
profile = api.user(user_id="1191812153") 

我要指出,你可能不会需要调用用户的呼叫,如果你做了搜索,因为你可能只是拥有你需要的所有信息。这将取决于你当然在做什么,所以我给你一个使用其他用户API的一般方法。