java - Facebook 实时更新 : Validating X-Hub-Signature SHA1 signature in Java

标签 java facebook sha real-time-updates

当 Facebook 发送实时更新时,它们会在 HTTP header 中包含一个 X-Hub-Signature。根据their documentation ,他们使用 SHA1 和应用程序 secret 作为 key 。

基于 similar question对于 C#,我尝试像这样验证签名('body' 是 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。

谁能帮忙解决问题?

最佳答案

原来密码是正确的,我用错了 key :-/

无论如何,我希望这可以帮助其他人。

关于java - Facebook 实时更新 : Validating X-Hub-Signature SHA1 signature in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17221253/

相关文章:

facebook - 发给 Facebook 测试用户的电子邮件去哪里了?

objective-c - 如何在 iOS 中设置 Facebook 帖子的隐私?

security - 如何验证源代码是否从网络复制

Android Key 密码丢失,但我有 keystore 密码

java - 将 hash_hmac 转换为 android java

java - 如何构建正则表达式的最佳 AST?

java - JTextArea 在大型粘贴上卡住 UI

java - 如何模拟实现类?

java - 如何正确输出HTTP请求报文

ios - 使用未解析的标识符 sourceApplication Facebook SDK