我正在使用PHP库的PHP库(http://github.com/facebook/php-sdk),但我对它是如何工作(或不工作)有点困惑.
我只想验证用户身份并获取用户ID.我真正想知道的是一旦用户登录Facebook并返回我的网站该怎么办.URL中有称为"会话"的数据.是否需要存储以便不断获取用户ID?对我来说,从样本或(缺乏)文档来看,这一点并不明显.
另外,完全删除PHP库并仅自己处理响应,将其存储在会话变量中会更容易吗?如果我这样做,获取/提取当前用户ID的最佳方法是什么?
编辑:
目前,我已经从GitHub复制了facebook.php文件和example.php文件,并且只更改了example.php中的应用程序名称和密码.它不存储cookie并且说"你没有连接".但是,当print_r($session);
它工作时(但只有当url包含会话数据时).
还有其他人遇到过这样的问题吗?是否有可能在localhost上运行导致此问题?
编辑:
我将完全相同的两个文件上传到主机,它运行得很好.它存储了cookie并显示了它应该的所有信息.很可能在localhost上运行会导致问题.我已经更改了Facebook Developer应用程序的Connect选项卡下的设置,但仍然没有运气.
有人知道如何从localhost或我做错了吗?
URL中有称为"会话"的数据.是否需要存储以便不断获取用户ID?
是的,它需要存储,但Facebook类会解析它并将其存储在cookie中.
另外,完全删除PHP库并仅自己处理响应,将其存储在会话变量中会更容易吗?
facebook.php中Facebook
提供的类不需要使用API,但为您提供了一些便利,例如将常用URL放在一起,解析会话数据(发送到URL然后存储在cookie中),转换错误消息(带有"错误"键的JSON对象)到PHP异常等.
所以,简而言之,不,切割PHP库并不容易,因为你最终写的基本相同.
从示例中可以看出,他们$uid
通过调用获取User 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.