3
我试图解码Facebook signed_request以向非授权用户提供登录表单。我的代码如下:Facebook签名的请求解码不正确的填充
def parse_signed_request(sr):
encoded_sig, payload = sr.split('.', 2)
data = json.loads(base64.b64decode(payload.replace('-_', '+/')))
if not data['algorithm'].upper() == 'HMAC-SHA256':
raise ValueError('unknown algorithm {0}'.format(data['algorithm']))
return None
h = hmac.new(FB_APP_SECRET, digestmod=hashlib.sha256)
h.update(payload)
expected_sig = urlsafe_b64encode(h.digest()).replace('=', '')
if encoded_sig != expected_sig:
raise ValueError('bad signature')
return None
return data
我的问题是,由于是,此代码成功地为谁已经登录的用户,但谁没有登录我得到一个“不正确的填充”用户b64decode错误。但是,如果我使用'='标记填充有效内容,则所有用户都将“授权”作为“登录”传递,而不管它们是否实际上都是。
有人可以帮我吗?
'(4 - LEN(INP)%4)'已经是0和3之间你不必把它模4.此外还有'的base64 .urlsafe_b64decode'已经为你做了'inp.replace(' - ','+')。replace('_','/')'。 – Marii 2013-04-18 14:08:51