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.
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. –