【发布时间】:2011-11-24 02:34:38
【问题描述】:
我使用 Facebook 作为登录网站的选项,然后代表他们执行 Graph API 请求。我正在升级到新的 JavaScript SDK 和 PHP SDK,以便在 10 月 1 日截止日期之前使用他们最新的 oAuth 内容。
PHP SDK 现在带有一个抽象的 BaseFacebook,并且他们有一个示例 Facebook 类实现,它依赖于 PHP $_SESSIONs。我运行着一个相当大的多服务器网站,这使得使用$_SESSIONs 变得很棘手——不能使用默认的基于文件的会话,并且数据库支持的会话通常出于性能原因而没有好处。不确定我是否希望它们在 Memcached 中,因为如果它被清除,用户不应该退出,等等。
具体的class只需要你为每个访问者持久化这4个字段:state、code、access_token、user_id。似乎并非所有这些都需要纯粹基于 $_SESSION。我正在尝试确定真正需要去哪里......
- 例如,
state数据似乎可以存储在客户端 cookie 中,因为它仅 1 次用于 CSRF 预防。 - auth
code真的需要持久化还是只使用一次? -
user_id和access_token可以存储在我的usersMySQL 数据库中吗?如果是这样,我如何使用fbsr_cookie 识别谁是 Facebook 授权用户登录他们?
我很乐意将一些东西存储在数据库中,只要清楚地知道它只在必要时才被访问(不是在注销用户的每个页面请求上)。
基本上:在不使用 $_SESSIONs 的情况下验证 FB 用户是否可行?“会话”是指所有访问者(登录或未登录)的一些 PHP 设置的 cookie,将他们链接到服务器端数据。
【问题讨论】:
标签: php facebook session facebook-javascript-sdk facebook-php-sdk