JS和PHP SDK 4.0授权的最佳实践 - $ _SESSION?

时间:2014-05-19 11:34:57

标签: php facebook facebook-graph-api facebook-php-sdk

我正在尝试使用适用于JS和PHP SDK 4.0的Facebook API在页面上实现登录和注册。 4.0 SDK似乎相对较新,并且最近发生了很大的变化。那里没有很多答案。文档似乎也很差。

我已经有一个使用php / mysql进行标准登录的页面。这只是用户登录/注册的另一种选择。

在Stackoverflow上阅读几年后,这是我的第一篇文章。如果它在某种程度上不合适,请提前抱歉。

这就是我想要设置它的方式:

  • 登录旁边的Facebook按钮,连接了JS Facebook登录对话框。
  • 如果用户授权:将带有ajax请求的结果发送到php-page
  • 使用FacebookJavaScriptLoginHelper设置会话。
  • 使用getLongLivedSession获取长期访问令牌。
  • 请求/我。检查此帐户的电子邮件是否已经是我网站上的用户。
  • 如果还不是用户:要求输入用户名,请在Facebook上注册用户信息。
  • 通过在我的数据库中保存内部用户ID和访问令牌来连接帐户

到目前为止的问题:

  • 我是否应该通过客户端的AJAX调用发送令牌,否则这会带来安全隐患?我可以用PHP SDK来获取令牌。
  • 我应该用$ _SESSION存储令牌吗?我应该自己手动存储吗?如果是这样,PHP SDK中是否内置了这方面的功能?找不到任何。

当用户完成此过程时,我希望能够在用户授权我的应用程序(并登录FB)时直接在页面加载时检查服务器端。

  • 我应该使用$ _SESSION获取访问令牌,还是有功能呢?如果用户已经获得授权,是否有任何内置功能可以进行标准检查?
  • 在PHP中执行此操作时,我应该使用FacebookRedirectLoginHelper吗?看起来有点奇怪,因为当我的登录对话框与JS一起使用时,我永远不想用PHP重定向。

也许我已经把这一切都弄错了。我主要担心的是,如果我真的必须使用$ _SESSION存储令牌。我在教程中看到很多人都这样做,但在Facebook文档中没有发现它。

1 个答案:

答案 0 :(得分:2)

感谢您的详细帖子。很多人在他们的第一篇文章中投入了太多精力;)

您引用的令牌由JS SDK自动存储在cookie中。您可以通过以下方式在PHP端实例化会话:

$js_helper = new FacebookJavaScriptLoginHelper($app_id);
$session = $js_helper->getSession();

或者:https://developers.facebook.com/docs/php/FacebookJavaScriptLoginHelper/4.0.0

您不必自己存储令牌,因为它已经存储在cookie中。

这会使情况更清楚吗?