通过Facebook API获取自己的数据

8 投票
4 回答
5055 浏览
提问于 2025-04-15 22:16

我正在为一个喜剧团体建立一个网站,他们使用Facebook作为其中一个营销平台;新网站的一个要求是能够在日历上显示他们所有的Facebook活动。

目前,我只是想写一个Python脚本,从我自己的Facebook账户中提取一些数据,比如我所有朋友的列表。我想,一旦我能做到这一点,就可以开始从我客户的账户中提取更复杂的数据(因为他们已经给了我访问权限)。

我看了很多这里的帖子,也浏览了Facebook的API文档,包括Facebook Connect,但我感觉很困惑。所有我读到的内容似乎都太复杂了,因为它涉及到设置很多基础设施,以便让我的应用程序能够连接到任何授权我的用户的账户。考虑到我只需要访问一个账户,这不是应该简单得多吗?

我找不到一种方法来获取数据,而不需要显示Facebook的登录窗口。我有一个脚本可以获取我所有的朋友,但它包括一个重定向,我必须亲自登录Facebook。

如果有任何建议或链接,我会很感激,我觉得我一定是漏掉了什么简单的东西。

谢谢!

4 个回答

0

我不是Facebook或Facebook Connect方面的专家,不过我见过一些使用它的应用,感觉好像只有一种“官方”的使用方式。看起来你最好的选择可能就是这个方向。

http://wiki.developers.facebook.com/index.php/Connect/Authentication_and_Authorization

不管你具体是怎么“使用”的,你仍然需要授权这个应用去连接你的账户,这就意味着你还需要有一个Facebook应用。

7

我只是把成功的建议记录下来,方便其他人看到这个帖子。

根据Daniel和William的建议,我通过连接选项获得了正确的权限。William提供的这个链接解释了Facebook连接是怎么工作的:

https://developers.facebook.com/docs/authentication/

关于设置实际认证的部分对我帮助很大。
http://developers.facebook.com/docs/api

基本步骤如下:

你需要发一个链接到以下网址。用户需要实际点击这个链接(即使这个用户只是你自己,网站管理员)。
https://graph.facebook.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=http://www.example.com/HANDLER

这会重定向到Facebook登录页面,用户认证后会返回到 http://www.example.com/HANDLER。如果你想做的不仅仅是基本的读取和新闻更新,你需要在上面的链接中加入这个变量:scope=offline_access,user_photos。scope变量就是一个用逗号分隔的值的列表,Facebook会在登录过程中明确告诉用户这些权限,用户需要同意。对我来说,最有用的是offline_access标志(user_photos可以让你访问他们的照片),这样我可以在不需要用户定期登录的情况下获取内容(只要我存储后面获得的访问令牌)。

http://www.example.com/HANDLER 上有一个脚本,它会从请求中获取一个变量(所以Facebook会在认证后重定向到 http://www.example.com/HANDLER&code=YOUR_CODE)。你的处理程序需要提取出code变量,然后发送以下请求:
https://graph.facebook.com/oauth/access_token?
client_id=YOUR_CLIENT_ID&
redirect_uri=http://www.example.com/oauth_redirect&
client_secret=YOUR_SECRET_KEY&
code=YOUR_CODE

这个请求会返回一个格式为access_token=YOUR_ACCESS_TOKEN的字符串。

只需解析出'access_token=',你就会得到一个可以用来访问Facebook图形API的令牌,像这样发请求:
http://graph.facebook.com/me/friends?access_token=YOUR_ACCESS_TOKEN
这会返回一个包含你所有朋友的JSON对象。

希望这能帮到其他人,省去在文档中翻找的麻烦。感谢大家的帮助!

2

没错,Facebook的API主要是为了那些开发会被很多人使用的应用程序的开发者准备的。

幸运的是,新的Graph API比之前的版本简单多了,使用起来不会太难,你不需要搭建很多复杂的基础设施。

需要实现授权功能,不过这并不难,只要你向用户请求一次离线访问权限,就只需要做一次。

目前,你可以参考一下关于桌面认证的文档,这对你来说可能最有帮助,不过等你的网站应用运行起来后,可以考虑使用基于JavaScript的认证。

完成认证后,你只需要向不同的URL发送GET请求,然后处理返回的JSON数据。

这里有关于事件的文档,你可以通过用户的朋友连接获取朋友列表。

撰写回答