Instagram 订阅 API 始终只创建 1 个订阅并覆盖另一个

Instagram Subscription API always creates just 1 subscription and overwrites the other

我终于知道如何创建订阅了。而且效果很好,每次我添加新媒体时我都会收到 Instagram 的推送。

现在的问题是,我已经建立了一种机制,以便我们的用户可以将他们的 insta 同步到我们的网站。所以我应该能够为同一个 client_id 创建多个订阅。据我了解,订阅就是为了做到这一点。现在,当另一个用户出现并创建新订阅时,另一个用户(使用另一个 Instagram 帐户创建)将被删除和替换。我收到了一个成功的 Instagram 订阅,其 subscription_id 与我的其他订阅完全相同。当我使用 curl 列出订阅时,我只看到 1 个订阅 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 设置为每个调用的唯一字符串,以测试这是否是问题所在,正如文档所说,每个请求都应该是单独的,但这并不重要,同样问题。

沙盒模式和实时模式存在该问题。

这里还有什么我遗漏的吗?我把整个功能弄错了吗?是否只有一种方法可以为每个 client_id 创建 1 个订阅,但如果是这样,为什么它会返回 subscription_id?

好吧,我通过在某个地方上网找到了自己的答案,我发现了一个启发了我的提示: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,您可以使用它来区分用户并在授权过程中映射到您的内部用户! 另请注意,无论出于何种原因,它都被包裹在一个数组中...