[FIXED] Wie entschlüsselt man die base64-URL in Python?

Ausgabe

Für Facebook-fbml-Apps sendet Facebook einen signed_request-Parameter, der hier erklärt wird:

http://developers.facebook.com/docs/authentication/canvas

Sie haben die PHP-Version zum Decodieren dieser signierten Anfrage angegeben:

http://pasti.org/1054154

Wie macht man dasselbe in Python?

Ich habe das base64-Modul ausprobiert, aber ich erhalte einen falschen Padding-Fehler:

>>> base64.urlsafe_b64decode("eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEyNzk3NDYwMDAsIm9hdXRoX3Rva2VuIjoiMjk1NjY2Njk1MDY0fDIuRXpwem5IRVhZWkJVZmhGQ2l4ZzYzUV9fLjM2MDAuMTI3OTc0NjAwMC0xMDAwMDA0ODMyNzI5MjN8LXJ6U1pnRVBJTktaYnJnX1VNUUNhRzlNdEY4LiIsInVzZXJfaWQiOiIxMDAwMDA0ODMyNzI5MjMifQ")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/base64.py", line 112, in urlsafe_b64decode
    return b64decode(s, '-_')
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/base64.py", line 76, in b64decode
    raise TypeError(msg)
TypeError: Incorrect padding

Lösung

Anscheinend haben Sie beim Kopieren der ursprünglichen base64-codierten Zeichenfolge die letzten beiden Zeichen übersehen. Fügen Sie der Eingabezeichenfolge zwei Gleichheitszeichen (=) hinzu und sie wird korrekt dekodiert.


Beantwortet von –
Geert


Antwort geprüft von –
Jay B. (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like