Обновление в реальном времени 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 ответов


оказалось, код правильный, я использовал неправильный ключ :-/

в любом случае я надеюсь, что это может помочь кому-то другому.