我终于想出了如何创建订阅。它工作正常,我每次添加新媒体时都会从Instagram上推送。
现在的问题是,我已经建立了一种机制,以便我们的用户可以将他们的insta同步到我们的网站。所以我应该能够为同一个client_id创建多个订阅。根据我的理解订阅是为了做到这一点。现在,当另一个用户出现并创建新订阅时,另一个用户(使用另一个Instagram帐户创建)将被删除并替换。我收到一个成功的Instagram订阅,其订阅与我的其他订阅完全相同。当我使用curl列出订阅时,我只看到订阅时使用subscription_id 0。
{"data": [{"id": 0, "type": "subscription", "object": "user", "object_id": null, "aspect": "media", "subscription_id": 0, "callback_url": "**callbackurlReplacedForSecurityReasons"}], "meta": {"code": 200}}
这怎么可能?
从文档中创建订阅的调用如下所示:
curl -F 'client_id=CLIENT-ID' \
-F 'client_secret=CLIENT-SECRET' \
-F 'object=user' \
-F 'aspect=media' \
-F 'verify_token=myVerifyToken' \
-F 'callback_url=http://YOUR-CALLBACK/URL' \
https://api.instagram.com/v1/subscriptions/
现在我已经将verify_token设置为每个调用的唯一字符串,以便测试是否存在问题,因为文档说它应该对每个请求都是单独的,但它没关系,同样的问题。
Sandbox模式和实时模式存在问题。
我还缺少什么吗?我觉得这个功能错了吗?是否只有一种方法可以为每个client_id创建一个订阅,但如果是这样,为什么它会给我一个subscription_id?
答案 0 :(得分:1)
好的,我已经通过网上冲浪找到了自己,我发现了一个暗示我的暗示:D真的很难记录订阅如何在Instagram方面工作。
我觉得这个功能完全错了。我的理解是,我必须为每个用户创建一个订阅,如果用户不再需要它,他就会删除它。
它的实际工作原理如下:
您为整个客户(不是每个用户)创建1个订阅。每个用户只需要授权应用程序就可以了!您的回调方法现在将接收已授权客户的用户的所有更新。如果他们不再需要它,他们要么必须取消对您客户的授权(他不太可能找到该选项;))或者您只是不再对收到的消息作出反应。
有点偏离主题,但很高兴知道: 我还想将来自insta的json的结构添加到你的回调中,因为这不是在Instagram方面记录的(你不知道自己得到了什么而没有自己测试)
发布新媒体时收到的json如下所示:
[{
"object": "user",
"object_id": "4857061161",
"changed_aspect": "media",
"time": 1502958709,
"data": {
"media_id": "1583254852313311736_4857061161"
},
"subscription_id": 0
}]
object_id是Instagram用户ID,您可以在授权过程中区分用户并映射到内部用户! 另请注意,无论出于何种原因,它都被包装在一个数组中......