【问题标题】:Where to find the Facebook cookie?在哪里可以找到 Facebook cookie?
【发布时间】:2011-06-13 09:18:33
【问题描述】:

我对此有点陌生,所以请耐心等待。 我通过 Javascript SDK 安装了一个“使用 Facebook 登录”按钮,效果很好。 我还设置了 PHP 代码 (facebook.php) 我可以通过 javascript 成功登录 Facebook,但无法通过 php 从会话中访问 UID。 那么,如何让 php 访问会话 javascript 集? 谢谢

编辑:(在此处发布代码,以便于阅读)

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

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

刷新页面,并尝试访问通过 php 设置的会话,结果为空。

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 可以在其他任何地方获取它。

【问题讨论】:

    标签: php javascript facebook login


    【解决方案1】:

    我碰巧有一个blog post 和一些previous answers 可能对您有用。

    您是否已在 Facebook 上将您的网站注册为“应用程序”?如果没有,您将需要这样做。 Facebook 设置的 cookie 允许您的网站访问用户的信息(一旦他们同意授予您的“应用程序”访问权限)使用您的应用程序 ID 和“秘密”(您不得共享的​​长字母数字字符串,或其他应用程序将能够冒充您的应用程序)以使用用户 ID 和对用户和您的应用程序唯一的身份验证令牌设置加密值(表示他们授予您对其数据的权限)。

    与任何其他 cookie 一样,cookie 与请求一起发布到您的网站。您将使用应用程序的密钥对其进行解密并提取用户的 ID 和身份验证令牌,然后您将使用它们通过 Facebook 的图形 API 访问数据。

    【讨论】:

    • 是的,我已经注册了该应用程序。当我通过 javascript 登录时,我可以看到 response.session 进入,但使用 php 时看不到
    • @hogsolo:你能发布一些你想做的代码吗?
    • @hogsolo:没关系。只要确保你在你发布的任何代码中混淆了任何有危害的东西(比如应用程序的秘密)。与 Facebook 进行交互的方式有很多种,即使只是通过 JavaScript,也可以更轻松地提供可以重现问题的代码基线。
    • 我正在通过 javascriptSDK 版本登录 facebook。
      我可以通过控制台记录响应并查看它。 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 = 新 Facebook($config); $fb->getUser(); // 这将等于 null 因为 $fb 对象没有找到应该由 javascript 设置的 cookie
    • @hogsolo:facebook.php 是您下载的标准库吗?你能链接到它吗?我不熟悉它。您还需要在 JavaScript 中运行 FB.init() 吗? (或者你只是为了简洁而省略了它?)
    猜你喜欢
    • 2012-11-30
    • 2011-08-22
    • 2014-12-14
    • 2012-05-04
    • 2014-01-17
    • 2011-11-13
    • 2014-11-01
    • 2011-03-31
    • 2013-07-01
    相关资源
    最近更新 更多