2012-11-14 62 views
2

我正在嘗試訂閱標記。看起來回撥URL正在用hub.challengehub.mode正確調用,並且我想出瞭如何使用self.request.get('hub.challenge')訪問該挑戰。我以爲我只是應該呼應的挑戰,但似乎並沒有工作,因爲我收到以下錯誤在GAE日誌:如何返回Instagram實時訂閱挑戰?

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上的幫助人員指出了消息中的額外換行符。一旦我將模板文件放在一行上,它似乎就起作用了。我現在可以確認我的應用是通過Instagram的列表訂閱URL進行授權的。