使用图谱 API 是在 Facebook 开放平台中存取数据的主要方式。图谱 API 是一种基于 HTTP 的 API,应用可用其以编程方式查询数据,发布新动态,管理广告,上传照片和执行各种其他任务。
“社交关系图谱”是一种 Facebook 中信息的表示形式,图谱 API 得名于这种概念。图谱 API 由节点、连线和字段组成。通常要用节点获取有关特定对象的数据,用连线获取有关单个对象的对象集合,用字段获取有关单个对象或集合中每个对象的数据。在文献资料中,我们可能会将节点和连线统称为“端点”。例如,“向用户端点发送 GET
请求”。
所有数据传输都必须遵循 HTTP/1.1 协议,而且必须对所有端点使用 HTTPS。因为图谱 API 基于 HTTP,所以可将其用于任何有 HTTP 库的语言,例如 cURL 和 urllib。这意味着,您可以直接在浏览器中使用图谱 API。例如,在浏览器中请求以下网址……
https://graph.facebook.com/facebook/picture?redirect=false
……相当于发出以下 cURL 请求:
curl -i -X GET "https://graph.facebook.com/facebook/picture?redirect=false"
我们还对 facebook.com
启用了 includeSubdomains
HSTS 指令,但这不会对图谱 API 调用产生不利影响。
几乎所有的请求都会传递到 graph.facebook.com
托管网址。唯一的例外是使用 graph-video.facebook.com
的视频上传请求。
通过访问口令,您的应用可以访问图谱 API。几乎对所有图谱 API 端点都必须使用某种访问口令,因此每当访问端点时,都可能需要对您的请求使用访问口令。访问口令通常发挥以下这两种功能:
要了解详细信息,请查看我们的访问口令相关文献资料。
节点是有唯一编号的单个对象。例如,用户节点对象有许多,但用户节点对象各有各的编号,各代表一名 Facebook 中的用户。页面、小组、帖子、照片和评论都只是 Facebook 社交关系图谱中的一些节点。
以下 cURL 示例反映的是对用户节点的调用。
curl -i -X GET \ "https://graph.facebook.com/USER-ID?access_token=ACCESS-TOKEN"
此请求默认情况下会返回以下数据(已用 JSON 设置好格式):
{ "name": "Your Name", "id": "YOUR-USER-ID" }
您可以获取节点对象(如用户、页面或照片)的所有字段的清单,包括字段名称、说明和数据类型。对对象编号发送 GET
请求并添加 metadata=1
参数:
curl -i -X GET \ "https://graph.facebook.com/USER-ID? metadata=1&access_token=ACCESS-TOKEN"
得到的 JSON 响应将包含 metadata
属性,可列出指定节点的所有受支持字段:
{ "name": "Jane Smith", "metadata": { "fields": [ { "name": "id", "description": "The app user's App-Scoped User ID. This ID is unique to the app and cannot be used by other apps.", "type": "numeric string" }, { "name": "age_range", "description": "The age segment for this person expressed as a minimum and maximum age. For example, more than 18, less than 21.", "type": "agerange" }, { "name": "birthday", "description": "The person's birthday. This is a fixed format string, like `MM/DD/YYYY`. However, people can control who can see the year they were born separately from the month and day so this string can be only the year (YYYY) or the month + day (MM/DD)", "type": "string" }, ...
/me
节点是可转化成用户或页面(其访问口令目前用于进行 API 调用)对象编号的特殊端点。如果您有用户访问口令,则可用以下方式检索用户的姓名和编号:
curl -i -X GET \ "https://graph.facebook.com/me?access_token=ACCESS-TOKEN"
连线是两个节点之间的连接。例如,用户节点可与照片相连,照片节点可与评论相连。以下 cURL 示例将返回用户已发布到 Facebook 中的照片的列表。
curl -i -X GET \ "https://graph.facebook.com/USER-ID/photos?access_token=ACCESS-TOKEN"
返回的每个编号都可以反映出照片节点及其上传到 Facebook 的时间。
{ "data": [ { "created_time": "2017-06-06T18:04:10+0000", "id": "1353272134728652" }, { "created_time": "2017-06-06T18:01:13+0000", "id": "1353269908062208" } ], }
字段是节点属性。查询节点或连线时,默认情况下会返回一系列字段,如以上示例所示。但可用 fields
参数并列出想要返回的每个字段,从而指定想要返回的字段。这会取代默认字段,仅返回您指定的字段,但始终都会返回对象编号。
以下 cURL 请求中有 fields
参数和用户的姓名、电子邮件地址和头像。
curl -i -X GET \ "https://graph.facebook.com/USER-ID?fields=id,name,email,picture&access_token=ACCESS-TOKEN"
{ "id": "USER-ID", "name": "EXAMPLE NAME", "email": "EXAMPLE@EMAIL.COM", "picture": { "data": { "height": 50, "is_silhouette": false, "url": "URL-FOR-USER-PROFILE-PICTURE", "width": 50 } } }
大部分参数类型都简单明了,如 bool
、string
和 int
,但也有可在请求中指定的 list
和 object
类参数。
list
类参数用 JSON 语法指定,例如 ["firstitem", "seconditem", "thirditem"]
object
类参数也用 JSON 语法指定,例如 {"firstkey": "firstvalue", "secondKey": 123}
请查看我们的 Facebook 分享指南,了解如何发布到用户的 Facebook 中,或查看我们的公共主页 API 文档,了解如何发布到页面的 Facebook 动态中。
某些节点允许用 POST
操作更新字段。例如,可按如下方式更新 email
字段:
curl -i -X POST \ "https://graph.facebook.com/USER-ID?email=YOURNEW@EMAILADDRESS.COM&access_token=ACCESS-TOKEN"
对于创建和更新端点,图谱 API 可以立即读取成功发布或更新的对象,并返回相应读取端点支持的所有字段。
默认情况下,将返回创建或更新的对象的编号。要在响应中包含更多信息,请在请求中包含 fields
参数并列出要返回的字段。例如,要向页面动态中发布消息“Hello”,您可以发出以下请求:
curl -i - X POST "https://graph.facebook.com/PAGE-ID/feed?message=Hello& fields=created_time,from,id,message&access_token=ACCESS-TOKEN"
此请求会以 JSON 格式的响应返回指定字段,如下所示:
{ "created_time": "2017-04-06T22:04:21+0000", "from": { "name": "My Facebook Page", "id": "PAGE-ID" }, "id": "POST_ID", "message": "Hello", }
请参阅每个端点的参考文献资料,了解各个端点是否支持先写后读功能,以及可使用哪些字段。
如果读取因故失败(例如,请求返回不存在的字段时失败),则图谱 API 会用标准错误响应作出回应。请查看我们的错误处理指南了解更多信息。
通常可以通过对对象编号执行 DELETE 操作删除节点,如帖子或照片节点:
curl -i -X DELETE \ "https://graph.facebook.com/PHOTO-ID?access_token=ACCESSS-TOKEN"
通常仅可删除自己创建的节点,但请参阅每个节点的参考指南,了解删除操作相关要求。
通过订阅 Webhooks,您可以接收有关节点更改或与节点互动的通知。请参阅 Webhooks。
图谱 API 有多个版本,每个季度都会发布新版本。通过在请求路径的开头添加“v”和版本号,可在调用中指定版本。例如,下面的示例调用的是版本 4.0:
curl -i -X GET \ "https://graph.facebook.com/v4.0/USER-ID/photos ?access_token=ACCESS-TOKEN"
如果您不添加版本号,我们默认情况下会调用最旧的可用版本,因此建议在请求中添加版本号。
您可以在我们的版本控制指南中详细了解版本,也可在图谱 API 变更日志中了解所有可用版本。
可用 Facebook 的各种 API、SDK 和平台连接接口及进行跨平台开发。
开始使用图谱 API — 我们来用图谱探索工具探究 Facebook 社交关系图谱,以及为获取数据而发出几项请求。