2013-06-20 2 views
9

जब फेसबुक रीयल-टाइम अपडेट भेजता है, तो वे HTTP शीर्षलेख में एक्स-हब-हस्ताक्षर शामिल करते हैं। their documentation के अनुसार, वे SHA1 और एप्लिकेशन के रूप में एप्लिकेशन गुप्त का उपयोग कर रहे हैं।फेसबुक रीयल-टाइम अपडेट: जावा में एक्स-हब-हस्ताक्षर SHA1 हस्ताक्षर मान्य करना

सी # के लिए एक similar question के आधार पर मैं इस तरह हस्ताक्षर को सत्यापित करने की कोशिश की ('शरीर' संदेश अनुरोध के मुख्य भाग में फेसबुक द्वारा भेजे गए है):

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 हमेशा से अलग है गणना की गई हस्ताक्षर।

कोई भी समस्या को हल करने में मदद कर सकता है?

+0

आपको 'Charset.forName ("UTF-8") को परिभाषित करने की आवश्यकता नहीं है क्योंकि एफबी गुप्त केवल लैटिन 1 वर्ण (आईएसओ 885 9 -1) का उपयोग करता है। – jbrios777

उत्तर

10

बाहर कर देता है कोड सही है, मैं गलत कुंजी का उपयोग किया गया था: -/

वैसे भी मुझे आशा है कि यह किसी और मदद कर सकता है।

संबंधित मुद्दे