Facebook Login:如何将JavaScript与PHP SDK相结合?

2022-08-30 20:01:07

我如何结合两者中的示例

https://github.com/facebook/php-sdk/blob/master/examples/example.phphttps://github.com/facebook/connect-js/blob/master/examples/jquery/login.html

最终目标是我们可以使用jQuery登录,并且以某种方式以下行仍然有效

$user = $facebook->getUser();

我目前注意到的是,当我使用JavaScript登录时,它不会使用PHP设置会话,因此,它与基于PHP的SDK不兼容(因此,在这种情况下,$user仍然是空的)

我不是的忠实粉丝,因为它会导致浏览器加载不同的页面(Facebook登录),然后重定向回Web应用程序。如果我可以加载一个弹出框供用户登录,然后透明地重定向回我的Web应用程序,那就更理想了。因此,任何关于我如何实现此用户体验的建议将不胜感激。谢谢!<a href="$facebook->getLoginUrl()">Login with Facebook</a>


答案 1

不确定你是否得到了这个工作。当前的 JS API 具有保存 cookie 的配置,以便服务器可以读取它:

FB.init({
    appId  : 'YOUR APP ID',
    cookie : true
});

现在,在 PHP 中,您可以执行以下操作来使用 JS 中的会话:

// Read the cookie created by the JS API
$cookie = preg_replace("/^\"|\"$/i", "", $_COOKIE['fbs_' . FB_APP_ID]);
parse_str($cookie, $data);

// Startup the Facebook object
$fb = new Facebook(array(
    'appId'  => FB_APP_ID,
    'secret' => FB_APP_SECRET
));

// Say we are using the token from the JS
$fb->setAccessToken($data['access_token']);

// It should work now
var_dump($fb->getUser());

希望它有所帮助。


答案 2

我只使用脸书登录按钮 - https://developers.facebook.com/docs/reference/plugins/login/

一旦用户使用它来登录(如果他们还没有)并授予对你的应用程序(站点)的访问权限,PHP-SDK使用Facebook会话和API应该没有问题。

更新

我刚刚尝试使用新版本3.0 PHP SDK进行尝试,它肯定不起作用。在开发人员博客上找到此内容

如果您将 JavaScript SDK 与 PHP SDK 结合使用登录,则需要等待 JavaScript SDK 升级(4 周后推出)。由于 cookie 格式发生变化,PHP SDK 的 3.0.0 版本无法与当前的 JavaScript SDK 合作。

换句话说,在更新 JS SDK 之前,请使用 v2 PHP SDK。