2013-06-20 10 views
9

Facebookがリアルタイム更新を送信すると、X-Hub-SignatureがHTTPヘッダーに含まれます。 their documentationによれば、彼らはSHA1とアプリケーションの秘密をキーとして使用しています。Facebookのリアルタイムアップデート:JavaでのX-Hub-Signature SHA1署名の検証

私はこのような署名を検証しようとしたのC#(「本体」は、要求の本体の投稿によって送信されたメッセージである)ため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は常に異なっていますcalculateSignature

誰でも問題を解決できますか?

+0

FBシークレットはLatin1文字(ISO8859-1)のみを使用するため、 'Charset.forName(" UTF-8 ")を定義する必要はありません。 – jbrios777

答えて

10

は私が間違ったキーを使用していた、コードが正しい判明: -/

とにかく私は、これは他の誰かを助けることができる願っています。

関連する問題