Как вернуть вызов подписки Instagram в реальном времени?
Я пытаюсь подписаться на тег. Похоже, что URL обратного вызова вызывается правильно с помощью hub.challenge
и hub.mode
, и я понял, как получить доступ к вызову с помощью self.request.get('hub.challenge')
. Я думал, что должен был просто повторить вызов, но это не работает, так как я получаю следующие ошибки в журналах GAE:
InstagramAPIError: (400) APISubscriptionError-Challenge verification failed. Sent "647bf6dbed31465093ee970577ce1b72", received "
647bf6dbed31465093ee970577ce1b72
".
Вот полный обработчик:
class InstagramHandler(BaseHandler):
def get(self):
def process_tag_update(update):
update = update
mode = self.request.get('hub.mode')
challenge = self.request.get('hub.challenge')
verify_token = self.request.get('hub.verify_token')
if challenge:
template_values = {'challenge':challenge}
path = os.path.join(os.path.dirname(__file__), '../templates/instagram.html')
html = template.render(path, template_values)
self.response.out.write(html)
else:
reactor = subscriptions.SubscriptionsReactor()
reactor.register_callback(subscriptions.SubscriptionType.TAG, process_tag_update)
x_hub_signature = self.request.headers.get('X-Hub-Signature')
raw_response = self.request.data
try:
reactor.process('INSTAGRAM_SECRET', raw_response, x_hub_signature)
except subscriptions.SubscriptionVerifyError:
logging.error('Instagram signature mismatch')
1 ответ:
Так что возвращение его в виде строки сработало. Я должен был обратить более пристальное внимание на сообщение об ошибке, но потребовался полезный человек на Python IRC, чтобы указать на дополнительные разрывы строк в сообщении. Как только я поместил файлы шаблонов в одну строку, это, казалось, сработало. Теперь я могу подтвердить, что мое приложение авторизовано через URL-адрес подписки на список Instagram.