How to decode base64 url in python? How to decode base64 url in python? python python

How to decode base64 url in python?


try

s = 'iEPX-SQWIR3p67lj_0zigSWTKHg'base64.urlsafe_b64decode(s + '=' * (4 - len(s) % 4))

as it is written here


I have shared a code snippet for parsing signed_request parameter in a python based facebook canvas application at http://sunilarora.org/parsing-signedrequest-parameter-in-python-bas:

import base64import hashlibimport hmacimport simplejson as jsondef base64_url_decode(inp):    padding_factor = (4 - len(inp) % 4) % 4    inp += "="*padding_factor     return base64.b64decode(unicode(inp).translate(dict(zip(map(ord, u'-_'), u'+/'))))def parse_signed_request(signed_request, secret):    l = signed_request.split('.', 2)    encoded_sig = l[0]    payload = l[1]    sig = base64_url_decode(encoded_sig)    data = json.loads(base64_url_decode(payload))    if data.get('algorithm').upper() != 'HMAC-SHA256':        log.error('Unknown algorithm')        return None    else:        expected_sig = hmac.new(secret, msg=payload, digestmod=hashlib.sha256).digest()    if sig != expected_sig:        return None    else:        log.debug('valid signed request received..')return data


Apparently you missed the last two characters when copying the original base64-encoded string. Suffix the input string with two is-equal (=) signs and it will be decoded correctly.