身份验证

图谱 API 和市场营销 API 调用均需要使用访问口令,才能在每次 API 调用中作为参数传递。在本指南中,我们将向您介绍如何获取访问口令以用于测试。

如要详细了解身份验证,请参阅我们的主文档:Meta 技术的访问口令

本文档将涵盖以下主题:

图谱 API 探索工具

您可以使用图谱 API 探索工具来获取模拟用户访问口令。如要了解如何使用该探索工具,请参阅图谱 API 探索工具指南

获取用户访问口令

  1. 前往图谱 API 探索工具
  2. Facebook 应用中,选择用于获取该访问口令的应用。
  3. 用户或公共主页中,选择用户口令
  4. 权限下,选中 ads_read
  5. 点击生成访问口令。系统已在此按钮顶部的文本框中填充了访问口令。
  6. 保存该口令,以供日后使用。

调试

如要获取刚生成的口令的更多信息,请点击口令前面显示的 i 按钮。点击之后,系统将弹出一个屏幕,并显示有关该口令的一些基本信息。点击“在访问口令工具中打开”,跳转到“访问口令调试工具”。

您还可以直接访问访问口令调试工具,将生成的口令粘贴到文本框中。

调试时,请检查以下各项:

  • 应用编号:“前提条件”部分中提到的应用编号。
  • 到期时间:时间戳。短期口令有效期为一到两小时
  • 范围:包含在图谱 API 探索工具中添加的权限。

延长访问口令期限

  1. 使用图谱 API 探索工具完成获取访问口令的所有步骤。
  2. 复制您的口令。将口令粘贴到访问口令调试工具页面的文本框中。
  3. 访问口令调试工具页面,一直向下滚动到页面底部。
  4. 点击延长访问口令期限,获取长期口令。保存该口令,以供日后使用。

使用访问口令调试工具查看新口令的属性。新口令的有效期应该更长,例如 60 天或选择“到期时间”下的“永久”。请参阅长期访问口令

使用系统用户访问口令

系统用户访问口令是与系统用户账户关联的一种访问口令。该账户在商务管理平台中创建,用于管理资产和调用市场营销 API。对于无需对任何用户执行身份验证的服务器到服务器交互,系统用户访问口令很有用。系统用户访问口令可用来代表企业执行操作,例如读取和写入业务数据、管理广告系列和其他广告对象。

使用系统用户访问口令的一个优势是这种口令不会过期,因此可用于需要访问图谱 API 且长期运行的脚本或服务。此外,系统用户账户由于不与特定个人绑定,可用来在 Facebook 上对个人动态与业务动态进行一定程度的分离。

相比于长期用户访问口令,系统用户口令也不太可能因其他原因而失效。

手动获取口令

在您提示用户授予更多权限时,如果用户点击允许按钮,用户将跳转到包含 redirect_uri 参数值和授权码的网址:

http://YOUR_URL?code=<AUTHORIZATION_CODE>

构建一个包含以下信息的网址:用于获取口令的端点、应用编号、您的站点网址、应用密钥以及您刚收到的授权码。类似于以下网址:

https://graph.facebook.com/<API_VERSION>/oauth/access_token?
  client_id=<YOUR_APP_ID>
  &redirect_uri=<YOUR_URL>
  &client_secret=<YOUR_APP_SECRET>
  &code=<AUTHORIZATION_CODE>

响应中应该会包含该用户的访问口令:

  • 如果按照服务器端的身份验证流程操作,您将获得永久口令。
  • 如果按照客户端的身份验证流程操作,您将获得有效期限为大约一到两小时的口令。通过调用图谱 API 端点来延长口令期限,可将该口令换为永久口令。

如果此 API 是供企业的系统用户调用,您可以使用系统用户访问口令

您可以调试该访问口令,检查口令有效期,并使用访问口令调试工具编程验证 API 来验证被授予的权限。

存储口令

口令应安全地存储在您的数据库中,以供后续调用 API 时使用。在客户端和服务器之间传送口令必须通过 HTTPS 安全进行,确保用户帐户的安全性。详细了解在客户端和服务器之间传送口令的含意

您应该定期检查口令的有效性,并在必要时提示用户授予权限。即使是永久口令,也能在少数情况下失效。这些情况包括:

  • 用户更改了密码
  • 用户撤销了权限

由于用户访问口令可能随时由于某些原因失效或被撤销,您的应用应建立一个流程来向用户重新请求权限。用户启动您的网页应用时,请检查您当前拥有的该用户相关口令的有效性。如有必要,请通过身份验证流程向用户发送请求,以获得更新的口令。

如果此方法对您的应用行不通,您可能需要使用其他方法来提示用户。使用其他方法的适用情况如下:API 调用不是由用户界面直接触发,或 API 调用由定期运行的脚本发出。一种可能的解决办法是:向用户发送一封带有说明的邮件。