Php 从Facebook Connect验证会话是否有效
在一个例子中,我通过AJAX将所有Facebook会话数据发送到我们的服务器。Php 从Facebook Connect验证会话是否有效,php,javascript,html,facebook,Php,Javascript,Html,Facebook,在一个例子中,我通过AJAX将所有Facebook会话数据发送到我们的服务器。 服务器需要验证会话是否合法。我在stackoverflow上找到了这个: 它说要创建一个字符串,如下所示: access_token=1290380d9e&expires=92d903&secret=e9cj9kd&session_key=s49i9i3f&uid=12345 然后添加应用程序密钥,因此我假设字符串如下所示: access_token=1290380d9e&e
服务器需要验证会话是否合法。我在stackoverflow上找到了这个: 它说要创建一个字符串,如下所示:
access_token=1290380d9e&expires=92d903&secret=e9cj9kd&session_key=s49i9i3f&uid=12345
然后添加应用程序密钥,因此我假设字符串如下所示:
access_token=1290380d9e&expires=92d903&secret=e9cj9kd&session_key=s49i9i3f&uid=12345&app_secrete=23132132
此字符串的md5()
应与会话数据中的sig匹配。然而,它从来没有这样做过,所以我只是想知道这是否是一种合法的做法,或者我是否偏离了目标
有什么想法吗?这项技术是有效的,但您引用的描述有一些明显的错误 首先,字符串中不应有“&”字符。我知道这样看起来很奇怪,但是把它们放在外面,所以格式是NAME=VALNAME=VALNAME=VAL 其次,不要试图只包含一个固定的参数列表,如所列的五个参数。而是包括除“sig”之外的所有可用参数。否则,每当Facebook添加或重命名任何参数时,您的代码就会中断。并确保按字母顺序排列
生成这样的字符串,您的md5哈希值应该始终匹配。我根据您的建议尝试了几个示例,但sig代码仍然不匹配。见下文(我之所以将数据命名是因为明显的原因,所以MD5不匹配)
access\u-token=sdajdslkjald&expires=213123124214&secret=324324&session\u-key=asdasdsadda&uid=213213&app\u-secret=asdasd33242-md5=8158f7be460c5644ff4d669b5509c7c2
access\u-token=sdajdslkjaldexpires=2131224secret=324324-session\u-key=asdasdsaddauid=213213app\u-secret=asdasd33242-md5=0095b84394bbad230cd065f034948f9eaccess_token=sdajdslkjald&app_secret=asdasd33242&expires=21312124214&secret=324324&session_key=asdasdsadda&uid=2131213 md5=c1fd895572193aceb4fd5cfa06164fe2
access_token=sdajdslkjaldap&expires=2131242;=2131242; session mdu key=21324;58c4b9fb12835fe3981e3cf4373940a3
real sig=84a896f966d87412034a2ef7a50dd41d
当您将app_secret添加到末尾时,只需添加值,而不是“app_secret=”部分。很抱歉,在您最初的示例中,我没有注意到这一点。并确保包含所有参数。至少在某些情况下,我也会看到“base_domain”参数,因此如果存在,也需要包括该参数。