Обновление в реальном времени Facebook: проверка подписи X-Hub-Signature SHA1 на Java
когда Facebook отправляет обновления в реальном времени, они включают подпись X-Hub в заголовке HTTP. Согласно документация, они используют SHA1 и секрет приложения в качестве ключа.
на основе аналогичный вопрос для C# я попытался проверить подпись следующим образом ("тело" - это сообщение, отправленное facebook в теле запроса):
String passedSignature = req.getHeader("X-Hub-Signature").substring(5);
Mac hmac = Mac.getInstance("HmacSHA1");
hmac.init(new SecretKeySpec(FACEBOOK_SECRET.getBytes(Charset.forName("UTF-8")), "HmacSHA1"));
String calculatedSignature = Hex.encodeHexString(hmac.doFinal(body.getBytes(Charset.forName("UTF-8"))));
logger.debug("Calculated sigSHA1: " + calculatedSignature + " passedSignature: " + passedSignature);
но passedSignature всегда отличается от calculatedSignature.
кто-нибудь может помочь решить проблему?
1 ответов
оказалось, код правильный, я использовал неправильный ключ :-/
в любом случае я надеюсь, что это может помочь кому-то другому.