如何使用图表 API 查找当前用户的页面 ID?

How do I find the page ids of the current user using the Graph API?

我有一个 Web 表单,我要求用户向我传递一个 link 关于他们自己的 Facebook 页面的信息,该页面不一定是他们自己的页面,但可以是企业等的单独页面。

到目前为止,我已经实现了 Facebook 登录,登录后我使用获得的访问令牌查询 /v2.2/me 以了解用户 ID。虽然可以派生一个 link 到用户的个人页面,但可能是错误的!

Google 通过允许用户在登录后但返回授权码之前选择要使用的帐户,很好地解决了这个问题。由于 Facebook 似乎没有这样做(或者我可以以某种方式触发该行为吗?)我想检索当前用户管理的所有页面的列表,然后自己显示一个选择页面。但是如何获取当前用户管理的所有页面的列表?

我认为 /me/accounts 可能是对的。我在我的 Facebook 页面上创建了一个空的测试页面("artist")但是 /me/accounts 总是 returns 一个空数组。

看起来有很多应用程序需要页面 ID(比如 wordpress 插件),人们必须手动提供页面 ID,因此有大量文章、博客甚至 SO 问题都在解释如何通过挖掘 Facebook 中的某些设置甚至 Firebug 从 URL 派生页面 ID,这使得 google 的问题复杂得令人沮丧。

理论上我可以告诉人们只输入他们的页面 ID 并添加前面提到的一篇博客文章,但我认为这不仅不雅而且会淹没我无法找到的人的支持请求他们的页面 ID,并且还会导致人们输入无效的页面 ID 或不属于他们的页面 ID,因此我希望能有一个使用 API.

的解决方案

通过 API 查找属于当前用户的页面 ID 的唯一方法是 /me/accounts。如果您能够在未经 manage_pages 许可的情况下检索用户页面帐户,那将是对隐私的侵犯。

确保在 logging in

时授予 manage_pages

A user access token with manage_pages is required, and will only allow the retrieval for that specific person.

https://developers.facebook.com/docs/graph-api/reference/v2.2/user/accounts

您需要向用户解释您为何使用 manage_pages 权限。

如果你对此感到不舒服,那你就倒霉了。

唯一的另一种方法是让用户转到 Facebook 页面的 URL 并将其提交给您,这将是您验证的额外开销。

页面具有以下格式

  • 脸书。com/username
  • 脸书。com/id
  • 脸书。com/pages/pagename/id

一旦你涵盖了所有这些基础,提取用户名或 ID 并执行图形 API 调用

graph.facebook.com/usernamegraph.facebook.com/id