使用Facebook Graph API PHP库

时间:2010-04-22 22:18:10

标签: php facebook graph

我正在使用PHP库用于图谱API(http://github.com/facebook/php-sdk),但我对它是如何工作(或不工作)感到有点困惑。

我只想验证用户身份并获取用户ID。我真正想知道的是一旦用户登录Facebook并返回我的网站该怎么办。 URL中有称为“会话”的数据。是否需要存储以便不断获取用户ID?对我来说,从样本或(缺乏)文档来看,这真的不明显。

此外,完全删除PHP库并仅处理响应更容易,将其存储在会话变量中。如果我这样做,获取/提取当前用户ID的最佳方法是什么?

编辑:

目前,我已经从GitHub复制了facebook.php文件和example.php文件,并且只更改了example.php中的应用程序名称和密码。它不存储cookie并且说“你没有连接”。但是,当我print_r($session);它有效时(但只有当网址包含会话数据时)。

还有其他人遇到过这样的问题吗?是否有可能在localhost上运行导致此问题?

编辑:

我将完全相同的两个文件上传到主机,它运行良好。它存储了cookie并显示了它应该的所有信息。很可能在localhost上运行会导致问题。我已经更改了Facebook Developer应用程序的Connect选项卡下的设置,但仍然没有运气。

任何人都知道如何从localhost或我做错了什么?

5 个答案:

答案 0 :(得分:5)

URL中有称为“会话”的数据。是否需要存储以便不断获取用户ID?

是的,它需要存储,但Facebook类会解析它并将其存储在cookie中。


此外,完全删除PHP库并自己处理响应更容易,将其存储在会话变量中。

facebook.php 中提供的Facebook类不需要使用API​​,但为您提供了一些便利,例如将常用URL放在一起,解析会话数据(这是发送到URL然后存储在cookie中),将错误消息(带有“错误”键的JSON对象)转换为PHP异常等。

所以,简而言之,不,切断PHP库并不容易,因为你最终写的基本相同。

从示例中可以看出,他们通过调用$uid来获取用户ID(getUser):

if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

$ uid只是一个整数,$me是当前用户的数据(听起来你不需要)。通过调用:

可以检索相同的数据
$me = $facebook->api('/' . $uid); //Generates https://graph.facebook.com/[uid]

我现在遇到的问题是,Facebook类(makeRequest方法)中的curl函数由于某种原因返回NO内容。因此,$me最终没有任何结果,这使得示例仍然说“你没有连接”。但是,如果要输出$uid,你会看到它确实包含当前用户的ID。

答案 1 :(得分:1)

私有函数setCookieFromSession($ session = null)

失败,因为$ domain参数是emtpy。我正在使用它进行本地测试:

if ($domain != '') {
    setcookie($cookieName, $value, $expires, '/', '.' . $domain);
} else {
    setcookie($cookieName, $value, $expires, '/');
}

答案 2 :(得分:0)

您是否从github查看了最新版本的facebook.php? 最新版本考虑了魔术引号,因此将返回会话而不是null。

答案 3 :(得分:0)

有一件事有助于检查来自Facebook的响应标题有时(很少)它们可以提供信息。

我发现您需要调用/ oauth / authorize(带有查询参数)来授权网站/应用程序,以便Facebook为您提供访问令牌。

答案 4 :(得分:-1)

我认为您可以使用此http://3aroundweb.in/facebook-connect-using-graph-api/它包含实用指南和工作代码下载:)