保护我的 Web 服务不会在没有活动 Facebook 会话的情况下被调用


Secure my web service from being called without an active Facebook session

我正在开发一个Facebook画布应用程序(它是一个flash应用程序(,所有Facebook调用都是从客户端(JS SDK(完成的,我已经在我的服务器上设置了一个php Web服务来存储和读取数据库中的数据,所以基本上目前我根本没有使用Facebook php sdk。

保护我的 Web 服务不在没有活动 Facebook 会话的情况下被调用的最简单方法是什么?


更新:解决了,保罗的答案是正确的,谢谢@Paul。

问题很简单:初始化 JS sdk 是在 php 会话启动后完成的,因此对我的 php 文件的进一步调用无法识别为登录。为了使它工作,我在嵌入 swf 的文件中初始化了 Facebook 会话(曾经是 Html,现在是 php(,这意味着在加载 swf 之前,处理尚未授权应用程序的用户是通过 php 完成的。现在我可以依靠我的 Web 服务中的活动会话和用户标识,咖啡现在味道好多了。

我认为没有一种非常好的方法可以在不检查FB访问令牌是否有效的情况下做到这一点。

如果我是你,我会使用 SDK 来验证会话。它非常易于使用,只需从这里获取它并尝试以下代码:

<?php
require 'php-sdk/src/facebook.php';
$facebook = new Facebook(array(
  'appId'  => 'YOUR_APP_ID',
  'secret' => 'YOUR_APP_SECRET',
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
    // you have a secure session
}