2012-07-24 127 views
6

我想创建一个由Instagram照片支持的小型“即时图片搜索”应用程序。这就像Google Instant一样,您可以在输入更多字母时开始输入内容并显示/更新结果。如何通过API查询搜索Instagram?

您可以看到由Google图片驱动的live demo app。我知道这是可能的更大的引擎(谷歌,雅虎,必应),但我不知道,如果Instagram会允许这一点。熟悉API的任何人都可以提供帮助吗?

如果无法通过有意义的API进行搜索。因为有这么多知识丰富的程序员,所以我只想首先在这里查看。

回答

18

首先,如果你不知道,已经有one similar(至少)web应用程序。话虽如此,让我们来回答:

您需要get your client_id,因为您需要它来调用API(更多信息here)。你应该打电话到this endpoint(约Instagram的的API端点here更多信息,你应该阅读:P):

https://api.instagram.com/v1/tags/SEARCH-TAG/media/recent?client_id=CLIENT-ID&callback=YOUR-CALLBACK 

当然,你之前得到了一个和YOUR-CALLBACK改变SEARCH-TAG用户输入,CLIENT-ID与您的回调函数的名称。

这一号召的响应进来JSONP,看起来像这样(从API的页面获取):

{ 
    "data": [{ 
     "type": "image", 
     "filter": "Earlybird", 
     "tags": ["snow"], 
     "comments": { 
      "data": [{ 
       "created_time": "1296703540", 
       "text": "Snow", 
       "from": { 
        "username": "emohatch", 
        "username": "Dave", 
        "id": "1242695" 
       }, 
       "id": "26589964" 
      }, 
      { 
       "created_time": "1296707889", 
       "text": "#snow", 
       "from": { 
        "username": "emohatch", 
        "username": "Emo Hatch", 
        "id": "1242695" 
       }, 
       "id": "26609649" 
      }], 
      "count": 3 
     } 
     "caption": { 
      "created_time": "1296703540", 
      "text": "#Snow", 
      "from": { 
       "username": "emohatch", 
       "id": "1242695" 
      }, 
      "id": "26589964" 
     }, 
     "likes": { 
      "count": 1, 
      "data": [{ 
       "username": "mikeyk", 
       "full_name": "Mike Krieger", 
       "id": "4", 
       "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg" 
      }] 
     },   
     "link": "http://instagr.am/p/BWl6P/", 
     "user": { 
      "username": "emohatch", 
      "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg", 
      "id": "1242695", 
      "full_name": "Dave" 
     }, 
     "created_time": "1296703536", 
     "images": { 
      "low_resolution": { 
       "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_6.jpg", 
       "width": 306, 
       "height": 306 
      }, 
      "thumbnail": { 
       "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_5.jpg", 
       "width": 150, 
       "height": 150 
      }, 
      "standard_resolution": { 
       "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_7.jpg", 
       "width": 612, 
       "height": 612 
      } 
     }, 
     "id": "22699663", 
     "location": null 
    }, 
    ... 
    ] 
} 

然后你只需要处理这个响应,做任何你想做的事情:)

+0

哇这是一个令人难以置信的详细回应谢谢!我现在没有时间去查看代码,但是您将我与一个完美的工作示例联系起来。只是在更换'SEARCH-TAG'时出现一个简短的问题,我将如何添加用户输入?这是否会首先被URI编码,以便搜索“baby puppy”变成“baby + puppy”? – Jake 2012-07-24 23:03:48

+1

@JakeRocheleau,我做了一些测试,看起来API不接受多个标签。然后我搜索了它,事实上,API每个请求仅限于一个标记([link](http://osqa.statigr.am/questions/653/multiple-tag-search),[link](https ://groups.google.com/forum/?fromgroups#!topic/instagram-api-developers/VJPdeDs9tIA)):/如“baby + puppy”或“baby%20puppy”会返回任何内容。因此,为了在您的应用中支持多个标签,您可能需要拆分用户输入并发出多个请求,这有点困难。祝你好运:) – scumah 2012-07-25 07:25:56

+0

作为更新:这个同样的端点现在需要一个ACCESS_TOKEN来查询https://www.instagram.com/developer/endpoints/tags/ – igneosaur 2017-06-05 14:51:23

3

一个重要的侧面说明:Instagram允许最多5000个查询小时。如果你使用带有应用程序ID的查询。 如果您想提高此限制,您可以要求用户进行身份验证。然后您可以传递用户访问令牌。 希望这可以帮助

+1

为什么你想要降低极限? – user83039 2014-12-26 21:15:35

+0

@ user83039如果你不需要更多的查询,每小时,如果你的应用程序不需要更多。 – kinduff 2016-01-19 03:25:27