5

以前は機能していました。その後、完全に機能しなくなるまで、時々機能し始めました。

以下は私の購読コードです:

def instagram_realtime_subscribe(event_slug, topic):
    api = InstagramAPI(client_id = CLIENT_ID, client_secret = CLIENT_SECRET)

    r = api.create_subscription(object = 'tag',
                            object_id = topic,
                            aspect = 'media',
                            callback_url = 'http://<domain>/event/%s/import/instagram/realtime'%(event_slug),
                            client_id = CLIENT_ID,
                            client_secret = CLIENT_SECRET
)

以下は、instagram からの GET および POST リクエストを処理するための私の見解です。

def import_instagram_rt(request, slug):
    if request.method == "GET":
        mode = request.GET.get("hub.mode")
        challenge = request.GET.get("hub.challenge")
        verify_token = request.GET.get("hub.verify_token")
        if challenge:
            return HttpResponse(challenge, mimetype='text/html')
        else:
            return HttpResponse("test", mimetype='text/html')
    else:
        x_hub_signature=''
        if request.META.has_key('HTTP_X_HUB_SIGNATURE'):
            x_hub_signature = request.META['HTTP_X_HUB_SIGNATURE']
        raw_response = request.raw_post_data
        data = simplejson.loads(raw_response)
        for update in data:
            fetch_data(slug, update["object_id"])

以下は私のurls.pyです

url(r'^event/([-\w]+)/import/instagram/realtime$', import_instagram_rt),

これは美しく機能するために使用されます。しかし、それは2日から機能しなくなりました。サブスクリプション関数が呼び出されるたびに、エラーがスローされます。

>>> instagram_realtime_subscribe("cats", "cats")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/ubuntu/webapps/django-projects/imports/views.py", line 687, in instagram_realtime_subscribe
    client_secret = CLIENT_SECRET
  File "/home/ubuntu/webapps/django-projects/local/lib/python2.7/site-packages/instagram/bind.py", line 151, in _call
    return method.execute()
  File "/home/ubuntu/webapps/django-projects/local/lib/python2.7/site-packages/instagram/bind.py", line 143, in execute
    content, next = self._do_api_request(url, method, body, headers)
  File "/home/ubuntu/webapps/django-projects/local/lib/python2.7/site-packages/instagram/bind.py", line 124, in _do_api_request
    raise InstagramAPIError(status_code, content_obj['meta']['error_type'], content_obj['meta']['error_message'])
InstagramAPIError: (400) APISubscriptionError-Unable to reach callback URL "http://<domain>/event/cats/import/instagram/realtime".

コールバック URL を手動で叩いてみたところ、私が書いた関数から期待される応答 "test" が得られました。サブスクリプション関数を呼び出す前に、その URL に対して requests.get() を手動で試したところ、200 応答が返されました。

他の誰もがアクセスできるのに、Instagram が私のコールバック URL を見つけられないのはなぜですか?

4

2 に答える 2

-1

どうやら、これは物事のコード部分とは何の関係もありませんでした。2 日後にまったく同じコードを試したところ、まったく問題なく動作しました。したがって、何らかの理由でブラックリストに登録されている/レート制限されているために、この問題が発生したと思います。Instagram リアルタイム API のレート制限がどのように機能するかはわかりません。それを新しい質問として投稿し、ここにリンクします。

于 2014-04-14T03:29:48.303 に答える