如果没有访问令牌,您可以从图形 api 获得的信息很少。只需将您的浏览器引导至:http://graph.facebook.com/YOU_USER_ID
.
您还可以检查User object documentation中的字段/连接表,其中在Permissions列(3rd)中显示“不需要 access_token”,您可以在没有令牌的情况下获得。
如果您想获取自己的其他数据并在您的网站上公开提供,您有两种选择:
使用服务器端身份验证流程,获取长期访问令牌(60 天),保存并在接下来的 60 天内使用它从 facebook 获取数据。然后,当它过期时,再次进行身份验证过程。只有你需要经历它,而不是你的用户,而且每 60 天只有一次。
自己登录,对您的应用进行身份验证,获取所有数据并将其保存在您的数据库中,然后将其呈现给您的用户。您需要每隔一段时间更新一次。
编辑
服务器端身份验证流程指南有一个用 php 编写的示例。这是一个简单的示例,并未涵盖所有场景,但它是一个好的开始。
我已经在 python 和 java 中实现了这一点,但它不是很容易共享的东西,因为它跨越多个请求和状态,所以我只描述我认为你应该使用的流程:
- 在 facebook 中,您可以访问您的画布应用程序
- Facebook 将使用您的画布 url 将 POST 放入 iframe
- 在发布数据中,您将获得一个签名的请求,对其进行解码并检查它是否具有访问令牌,如果有,请检查它何时过期。如果一切正常,请保存该令牌并且身份验证过程结束,否则:
- 将用户重定向到oAuth 对话框以及您的重定向 URL 和您需要的权限。
- 允许您自己的应用程序后,您将被重定向到带有代码参数(在查询字符串中)的“recirect_uri”。
- 针对 facebook 服务器交换访问令牌的代码并保存令牌。
- 然后,您可以将自己重定向到画布应用程序或停在那里。
这应该是一个长寿命的访问令牌,然后您可以使用 60 天。
至于将您的 fb 数据保存在您自己的数据库上,将数据保存在数据库上是一个非常简单的操作,这完全取决于您要保存的数据,您需要如何编码/使用它(json、xml、纯文本) )。
例如,假设您想要显示您自己的照片,然后在您获得令牌(如上所述)后,只需通过向以下位置发出 http 请求从您的服务器查询您的照片:https://graph.facebook.com/me/photos?access_token=XXXXXX
。您应该得到一个 json 编码的结果,对其进行迭代并将每张图片保存为您的数据库中的记录。