我们如何才能为客户提供实时Instagram位置通知?

时间:2015-10-02 17:22:42

标签: api real-time instagram instagram-api

我正在开发一个最终用户是中小企业主的系统。此功能的目标是获取其他人发布到Instagram上的图片(实时),这些图片标记有他们的营业地点。请注意,这与使用商家帐户@标记的图片不同(即我们需要this feed,而不是this feed)。

我计划使用记录here的实时订阅系统,因为它解释了我们可以订阅位置ID并接收有关该位置新媒体的通知。我们推出了它并立即开始失败,因为有一个未发布的限制为30个订阅(我想我们应该在开始构建它之前做更多的Google搜索)。

这基本上与here概述的问题相同,但该对话非常陈旧,我不确定最终目标是否完全相同,因为提议的解决方案对我没有帮助。

有太多客户帐户注册更多应用程序以获得足够的订阅(我们必须注册数千个应用程序)。我们希望我们可以使用通过Oauth2工作流程获得的Instagram用户访问令牌来创建更多订阅,但是我的实验也没有被淘汰出局。我知道其他人使用了大量的地理区域订阅而不是位置订阅,但这对我们来说也不会有足够的规模。

我对这个问题感到沮丧和困惑,因为:

  1. 似乎其他应用程序正在以不符合30个订阅限制的比例实时获取这些图片。
  2. 我无法想象许多用例是每个应用程序30个订阅将是一个有用的功能。
  3. 有没有人有解决方法?有没有办法使用Instagram用户凭据而不是应用程序凭据?我是否必须定期轮询定位信息并放弃我的实时愿望?

1 个答案:

答案 0 :(得分:0)

您的问题的答案:

某些解决方法有web-API:cronjobs会更新您的所有links并将已解析的数据写入您的数据库。加号:无需API applications。缺点:有时Web-API更改(请求和/或响应)。

您还可以自动为每个客户注册应用程序,将它们添加到数据库,订阅实时更新。然后获取更新。

没有办法使用access-token代替CLIENT-IDCLIENT-SECRET

请记住,"Real-time" photo updates并非真正real-time(平衡系统等)(来自文档:You should build your system to accept multiple update objects per payload)所以1分钟的更新就足够了。

<强> UPD

也许有帮助,也许你已经知道这种加速的灰色方式了。

您可以使用直接链接按位置web-API获取媒体。这是最简单的。您只需要csrftoken从Cookie中生成XHR requestCsrftoken可能来自未经授权的用户。您可以在Google Chrome浏览器的request标签中看到Network的详细信息。

简单示例:POST使用参数https://instagram.com/query/q查询ref(在示例中,他们的值被urldecoded解释):

q=ig_location(237630908){media.after(20000000000000000000000,2){nodes{id,display_src,thumbnail_src}}}&ref=locations::show

Content-type应为application/x-www-form-urlencoded; charset=UTF-8

XHR request的网页标题:

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Accept: */*
Accept-Language: en-US;q=0.6,en;q=0.4
Referer: https://instagram.com/explore/locations/237630908/
Origin: https://instagram.com
X-Instagram-AJAX: 1
X-Requested-With: XMLHttpRequest
X-CSRFToken: e4e1e1eddd67b2b50b6d8ae7b49e01c0
Cookie: csrftoken=e4e1e1eddd67b2b50b6d8ae7b49e01c0
Content-type: application/x-www-form-urlencoded; charset=UTF-8

(标题示例中的csrftoken是随机的,不要使用它)

不要经常使用它,Instagram有时会通过IP禁用某些网络功能,尝试更改csrftoken

答案是:

{
    status: "ok",
    media: {
        nodes: [
        {
            thumbnail_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/s640x640/sh0.08/e35/c0.135.1080.1080/12142408_1499221190404489_557984803_n.jpg",
            id: "1104470761628620590",
            display_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/e35/12142408_1499221190404489_557984803_n.jpg"
        },
        {
            thumbnail_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/s640x640/sh0.08/e35/c0.135.1080.1080/12139611_1663826773904632_2063764196_n.jpg",
            id: "1102282973026047789",
            display_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/e35/12139611_1663826773904632_2063764196_n.jpg"
        }
        ]
    }
}