2

我有用户和 Facebook 页面的 OAuth2 访问令牌,但我的数据库中没有存储类型区别。我希望能够使用相同的 Graph API 查询获取有关用户/页面的基本信息 - 但对于用户,我希望在此基础上获取电子邮件字段。

  1. GET v2.5/me?fields=name,email// 用户令牌

    成功。

  2. GET v2.5/me?fields=name,email// 页面标记

    错误。 (#100) Tried accessing nonexisting field (email) on node type (Page)

由于我不知道令牌属于用户还是页面,所以我无法,email轻松地从查询中删除该字段。有什么方法可以指定“可选”email字段,所以我没有收到上述错误?

,emailPS:目前,如果导致错误,我会进行第二次请求。

4

1 回答 1

2

不,如果您请求的字段在您请求的对象类型上不存在,API 将会失败 - 如果它没有 [并且直到最近才出现],那么就会引入一整类错误人们请求不存在的字段,包括通过拼写错误

如果您在访问 ID 时不知道 ID 是什么类型的对象,那么您的应用程序如何检索和存储其数据可能存在其他问题 - 对于此示例,您应该使用元数据 ( ?metadata=true) 或Facebook 的调试工具清理哪些令牌是用户令牌,哪些是页面令牌以及它们用于哪个页面或用户 - 一旦你知道,存储该信息,并在未来使用 - 如果直接使用 API 并检查元数据,请签type入包含元数据时的响应,对于用户或页面令牌,它将是“用户”或“页面”

您的应用确实不应该保存页面令牌但不知道它们用于哪个页面,因为您需要页面管理员的用户访问令牌才能从 API 检索该令牌;我建议您在首次保存页面令牌时以结构化方式存储用户令牌和页面令牌,以避免将来出现这种混淆

于 2015-12-16T20:20:10.423 回答