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