如何从django 1.7中的facebook graph api解析signed_request

时间:2015-03-30 09:59:46

标签: python django facebook facebook-graph-api

Facebook发送POST请求以访问页面中的自定义标签页,该请求附带一个已编码的参数signed_request

我尝试使用此代码对其进行解码:

def 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':
        print('Unknown algorithm')
        return None
    else:
        expected_sig = hmac.new(secret, msg=payload, digestmod=hashlib.sha256).digest()

    if sig != expected_sig:
        return None
    else:
        print('valid signed request received..')
        return data

这对我不起作用。只需返回None

如何解决这个问题?或者有没有其他方法来解码signed_request?

0 个答案:

没有答案