Tornado mit Facebook Registrierung Plugin
Frage
released Facebook eine Registrierung Plugin hier veröffentlicht http://developers.facebook.com/docs/user_registration vor wenigen Wochen.
Ich habe mich gefragt, wie können wir dies mit Tornado implementieren?
hielt ich 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, die POST die Fehlermeldung über spricht, so Ich versuchte, die _parse_signed_request von der GET und POST-Funktion zu verwenden.
Bitte erleuchte mich. Ich bin zur Zeit von meinem lokalen Computer durch die Art und Weise zu arbeiten.
Mit freundlichen Grüßen.
Lösung
Sie müssen deaktiviert CSRF Überprüfung auf diesen Endpunkt, da die Anforderung von Facebook kommt und nicht Ihre eigene Website
http://www.tornadoweb.org/documentation#cross- Website-Anfrage-Fälschungsschutz