使用我的应用程序密钥生成facebook签名?

时间:2009-11-24 20:36:55

标签: session facebook signature

当您使用“facebook connect”构建网站并使用您的用户名和密码登录Facebook时,Facebook会在您的网站上设置会话。

该会话是生成的“签名”

此签名是通过组合您和Facebook知道的“应用程序秘密”数据以及MD5散列结果而创建的。

我需要用于生成该签名的算法,以便我可以重新创建它并确保它与facebook创建的一个签名匹配。

if($_SESSION['facebookSignature'] == reGeneratedSignature){
   // save to database
}else{
  // go away I don't trust you
}

通过这种方式,我可以验证用户,我不需要对Facebook进行不必要的调用,并允许用户继续使用该网站。

2 个答案:

答案 0 :(得分:0)

验证签名链接是可行的方法,因此应该适合您。

查看FBConnectAuth的源代码,它可以执行您想要的操作,并且是通用的,以便它可以适应可能出现的任何新的FB Connect cookie - 所以希望它能适应新的JS库。

希望有所帮助,

亚当

答案 1 :(得分:0)

重建Facebook创建的签名非常简单。您只需要附加所有key=value对,然后附加您的私钥,最后计算结果字符串的MD5哈希值。

有关如何构建签名的更多详细信息,请参阅此answer

Facebook提供了一个PHP示例,说明如何在Single Sign-On部分重建sig here

我写的blog post完全相同,但是用Ruby代替。