【发布时间】: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