2011-01-07 9 views
0

Facebookは登録プラグインをここに公開しました http://developers.facebook.com/docs/user_registration数週間前です。Tornado with Facebook Registration Plugin

私はトルネードでこれをどのように実装できますか?

私は、エラーを受信まま:403 POST/AUTH/fbform(127.0.0.1):POST

から失わ '_xsrf' 引数がREDIRECT_URLがhttp://localhost:8888/auth/fbform されており、次のようにコードは次のとおりです。

class FBFormLoginHandler(BaseHandler, tornado.web.RequestHandler): 
    def get(self): 
     print "i'm in GET" 
     print self.request 
     # parse and check data 
     data = _parse_signed_request(self.request['_xsrf'], "XXXXX") 
     return 
    def post(self): 
     print "i'm in POST" 
     print self.request 
     # parse and check data 
     data = _parse_signed_request(self.request['_xsrf'], "XXXXX") 
     return 

    def _parse_signed_request(signed_request, app_secret): 
     print "hello in parse_signed_request" 
     try: 
      l = signed_request.split('.', 2) 
      encoded_sig = str(l[0]) 
      payload = str(l[1]) 
     except IndexError: 
      raise ValueError("'signed_request' malformed") 

     sig = base64.urlsafe_b64decode(encoded_sig + "=" * ((4 - len(encoded_sig) % 4) % 4)) 
     data = base64.urlsafe_b64decode(payload + "=" * ((4 - len(payload) % 4) % 4)) 

     data = json.loads(data) 

     if data.get('algorithm').upper() != 'HMAC-SHA256': 
      raise ValueError("'signed_request' is using an unknown algorithm") 
     else: 
      expected_sig = hmac.new(app_secret, msg=payload, digestmod=hashlib.sha256).digest() 

     if sig != expected_sig: 
      raise ValueError("'signed_request' signature mismatch") 
     else: 
      return data 

エラーメッセージがどのPOSTであるかわかりません。 getとpost関数から_parse_signed_requestを使用しようとしました。

私に教えてください。 私は現在、ローカルコンピュータから作業中です。

よろしくお願いいたします。無効CSRFへのあなたが持っている

+0

そのエンドポイントに要求するFacebookから来ていないので、ご自分のサイトをチェックしトルネード[Facebookの認証のための作り付けのサポート]を持っています(http://www.tornadoweb .org/documentation/auth.html?highlight = facebook#facebook)。これでほとんどの頭痛をスキップすることができます。 –

答えて