哪里可以找到Facebook cookie?

时间:2011-01-21 19:57:09

标签: php javascript facebook login

我对此有点新意,请耐心等待。 我已经通过Javascript SDK安装了“使用Facebook登录”按钮,该工作正常。 我还设置了PHP代码(facebook.php) 我可以通过javascript成功登录Facebook,但无法通过php访问会话中的UID。 那么,如何让php访问会话javascript集? 感谢

修改(从下方发布代码,以便更容易阅读)

我可以通过控制台记录响应并查看它。

FB.getLoginStatus(function(response) {
    console.log(response.session.uid);
});

刷新页面,并尝试访问通过php设置的会话,它出现null。

require_once(RELATIVE_PATH.'applibs/facebook.php');
$config = array('appId'=>Config::$fb_app_id, 'secret'=>Config::$fb_secret, 'cookie'=>true);
$fb = new Facebook($config);
$fb->getUser(); // this will equal null because the $fb object isnt finding the cookie supposedly set by javascript

* 在facebook.php中进行了一些调试

第358行

    $ cookieName = $ this-> getSessionCookieName();
    //重新调整fbs_myNumericAppId,看起来像是有效的。
    if(isset($ _ COOKIE [$ cookieName])){
    //失败!没有$ _COOKIE ['fbs_myNumericAppId']

这似乎合乎逻辑,因为登录facebook.com如何知道我的应用ID是什么? 登录到facebook.com后我也注意到,在$ _COOKIE中没有与facebook相关的内容。 所以,为了通过facebook.com登录facebook,然后有一个网站通知登录,你必须在页面加载上运行FB.login。 然后你必须通过返回到$ _COOKIE的javacript信息设置一个cookie,这样php就可以在其他任何地方拿起它。

1 个答案:

答案 0 :(得分:4)

我碰巧有一个blog post和一些previous answers可能对你有用作为参考点。

您是否在Facebook上将自己的网站注册为“应用程序”?如果没有,你需要这样做。 Facebook设置的cookie允许您的网站访问用户的信息(一旦他们同意给您的“应用程序”访问权限),就会使用您的应用程序ID和“秘密”(一个您不能共享的长字母数字字符串,或其他应用程序可以模拟您的用户ID和用户及您的应用程序特有的身份验证令牌(表示他们为您提供的数据的权限)设置加密值。

Cookie会像其他任何Cookie一样发布到您的网站。您将使用应用程序的秘密对其进行解密并提取用户的ID和身份验证令牌,然后您可以使用它通过Facebook的图形API访问数据。