2011-01-07 9 views
0

Facebook freigegeben hat ein Plugin für die Registrierung veröffentlicht http://developers.facebook.com/docs/user_registration vor ein paar Wochen.Tornado mit Facebook Registrierung Plugin

Ich frage mich, wie können wir das mit Tornado umsetzen?

Ich hielt einen Fehler zu erhalten: 403 POST/Auth/fbform (127.0.0.1): '_xsrf' Argument von POST fehlt

Die redirect_url ist http://localhost:8888/auth/fbform Und der Code ist wie folgt:

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 

Ich verstehe nicht, über welchen POST die Fehlermeldung spricht, also Ich habe versucht, die _parse_signed_request von der Get und Post-Funktion zu verwenden.

Bitte erleuchten Sie mich. Ich arbeite derzeit von meinem lokalen Computer aus.

Mit freundlichen Grüßen.

+0

Tornado hat [eingebaute Unterstützung für Facebook-Authentifizierung] (http: //www.tornadoweb .org/documentation/auth.html? highlight = facebook # facebook). Sie können die meisten Kopfschmerzen damit überspringen. –

Antwort