使用 Facebook Graph API PHP 库

问题描述 投票:0回答:5

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

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

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

编辑:

目前,我已从 GitHub 复制了 facebook.php 文件和 example.php 文件,仅更改了 example.php 中的应用程序名称和密钥。它没有存储 cookie,而是显示“您尚未连接”。但是,当我

print_r($session);
时,它可以工作(但前提是 url 包含会话数据)。

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

编辑:

我将完全相同的两个文件上传到主机,并且运行良好。它存储了 cookie 并显示了它应该显示的所有信息。问题很可能是在本地主机上运行引起的。我已经更改了 Facebook 开发者应用程序上“连接”选项卡下的设置,但仍然没有成功。

有人知道如何从本地主机执行此操作或者我做错了什么?

php facebook facebook-graph-api
5个回答
4
投票

URL 中有名为“session”的数据。是否需要存储才能不断获取用户ID?

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


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

facebook.php

中提供的
Facebook类并不是使用API所必需的,但它为您提供了一些便利,例如将常见的URL放在一起,解析会话数据(发送到URL然后存储在cookie),将错误消息(带有“error”键的 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 类中的curl 函数(

makeRequest

 方法)由于某种原因不返回任何内容。  因此, 
$me
 最终什么也没有,这使得该示例仍然显示 
“您尚未连接”。 但是,如果您要输出 $uid
,您会看到它确实包含当前用户的 ID。 


1
投票
有帮助的一件事是检查 Facebook 的响应标头,有时(很少)它们可以提供信息。

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


0
投票
您从 github 上查看过最新版本的 facebook.php 吗? 最新版本考虑了魔术引号,因此将返回一个会话而不是 null。


0
投票
私有函数 setCookieFromSession($session=null)

失败,因为 $domain 参数为空。我用它进行本地测试:

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

0
投票
我认为你可以使用这个

http://3aroundweb.in/facebook-connect-using-graph-api/它包含实用指南和工作代码可供下载:)

© www.soinside.com 2019 - 2024. All rights reserved.