2016-05-24 3 views
2

私はクイックスタートのFacebookメッセンジャーボットコードを追跡しようとしている(https://developers.facebook.com/docs/messenger-platform/quickstartこちらをご覧ください):エラーが

{「エラー」:{」 "、" type ":" OAuthException "、" code ":100、" fbtrace_id ":" ALtKsX4nJtX "}}

アイデアはありますか?私は正しい反応を返すようだが、何らかの理由でFacebookがそれを受け入れていないのだろうか?おかげ

コード(パイソン/ AppEngineの)次のように:私はちょうどあなたの機能respond_FB(sender_id, text)でテストされ、私はGoogleのApp EngineのAPIを持っていないので、私はrequests

response = requests.post(url, json=data) 

を使用

import webapp2 
import json 
import urllib 
from google.appengine.api import urlfetch 

class MainHandler(webapp2.RequestHandler): 
    print "hello" 

FB_MESSENGER_ACCESS_TOKEN = "" 

def respond_FB(sender_id, text): 
    json_data = { 
     "recipient": {"id": sender_id}, 
     "message": {"text": text + " to you!"} 
    } 
    url = "https://graph.facebook.com/v2.6/me/messages?access_token="+FB_MESSENGER_ACCESS_TOKEN 
    print("json_data", json_data) 
    data = urllib.urlencode(json_data) 
    response = urlfetch.fetch(url = url, payload = data, method = urlfetch.POST, headers = {"Content-Type": "application/json"}) 
    print(response.content) 

class FacebookMessenger(webapp2.RequestHandler): 
    def get(self): 
     if (self.request.get("hub.verify_token") == 'tomstoken'): 
      return self.response.write(self.request.get("hub.challenge")) 
     return self.response.write('Error, wrong validation token') 


    def post(self): 
     body = self.request.body 
     messaging_events = json.loads(body.decode("utf-8")) 
     sender_id = messaging_events["entry"][0]["messaging"][0]["sender"]["id"] 
     message = messaging_events["entry"][0]["messaging"][0]["message"]["text"] 
     respond_FB(sender_id, message) 
     return self.response.write('Received.') 

app = webapp2.WSGIApplication([ 
    ('/', MainHandler), 
    ('/webhook*', FacebookMessenger) 
], debug=True) 
+0

str(sender_id)にsender_idをラップする必要がありますか? – tomcritchlow

答えて

1

dataであればすべてがうまくいく。json_data

なぜjson_dataがエンコードされている必要があるのか​​分かりませんが、それはURLではありません