2014-03-27 36 views
4

我使用Instagram的RealTime API運行應用程序,當我最初訂閱標籤時,所有工作都正常,我可以確定我的響應時間都在100ms回到instagram,但大約一個小時後,他們隨機刪除我的標籤訂閱一小時半。我檢查並且我不受限速,因此我每隔10分鐘設置一次檢查我的訂閱,如果我訂閱的標籤不是從instagram返回以重新訂閱它。當運行,我得到一個迴應,這是認購 -Instagram刪除了標籤訂閱,並在重新訂閱時即使成功響應消失

{ object: 'tag', 
    object_id: '...', 
    aspect: 'media', 
    callback_url: 'http://...', 
    type: 'subscription', 
    id: '4479168' } 

但後來當我檢查我的訂閱再次使用API​​控制檯就說明沒有訂閱。

有沒有人知道爲什麼Instagram會自動刪除我的訂閱。

回答

2

您是否驗證/確認訂閱?你沒有提到在你的問題中這樣做,這導致我認爲可能在沒有被確認後超時?

按照API docs一個POST作出任何認購將觸發GETcallback_url,其中將包括:

  • hub.mode - 這將被設置爲「訂閱」
  • hub.challenge - 這將被設置爲一個隨機字符串,您的回調網址需要回顯才能確認您要訂閱。
  • hub.verify_token - 這將設置爲通過訂閱請求傳入的任何verify_token。

給出的例子網址是:

http://your-callback.com/url/?hub.mode=subscribe&hub.challenge=15f7d1a91c1f40f8a748fd134752feb3&hub.verify_token=myVerifyToken 

解析該回調後,必須發送包括hub.challenge值的響應,你應該有一個持久的訂閱。

+0

是的,如果你沒有驗證那麼創建方法失敗,再加上它們不會發送更新,因爲沒有創建訂閱。在我的情況下,訂閱創建得很好,工作幾分鐘,然後停止。 – MichaelGG

+0

是的訂閱是肯定的驗證,否則他們不會發送回應的訂閱ID。在我的測試過程中,唯一可以使其可靠運行的方法是每隔x分鐘檢查我的訂閱。如果訂閱沒有重新訂閱。運行了很長時間後,我的訂閱保持不變。我不知道爲什麼我需要這樣做,但是當長時間運行某些東西時,它似乎很好地工作。同樣,每次訂閱時,我都會存儲文章的min_id,所以當我說X後會給我最新的內容時,它會從停止的地方繼續。 – obj63mc

1

據我所知,這發生在Instagram決定你沒有足夠快速響應的時候。我注意到8個獨立的IP發佈完全相同的訂閱信息(相同的HTTP請求),我的應用程序顯然有一些暫時滯後問題。看起來,如果沒有立即發送回覆(ms的100秒),那麼Instagram會悄悄地刪除訂閱,並且無法找到答案。

解決方案是轉儲訂閱模型,而不是輪詢它們。