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

时间:2015-02-25 23:58:45

标签: facebook-graph-api

我有一个网络表单,我要求用户向我传递一个关于他们自己的Facebook页面的链接,这个链接不一定是他们自己的页面,但可能是一个单独的页面,用于商业或类似。

到目前为止,我已经实施了Facebook登录,登录后我使用获得的访问令牌查询/v2.2/me以获取用户ID的知识。虽然可以导出到用户个人页面的链接,但可能是错误的链接!

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

我认为/ me / accounts可能是正确的。我在我的脸书页面上创建了一个空的测试页面(对于"艺术家")但是/ me / accounts总是返回一个空数组。

看起来有很多应用程序需要一个页面ID(如wordpress插件),人们必须手动提供页面ID,因此有大量文章,博客甚至SO问题解释如何派生来自网址的网页ID,通过挖掘Facebook甚至Firebug中的某些设置,这使得谷歌解决问题变得非常复杂。

理论上我可以告诉人们只需输入他们的页面ID并添加之前提到的一篇博客文章,但我认为这不仅不够优雅,而且还充斥着我无法找到他们页面的人的支持请求id并且还会导致人们输入无效的网页ID或他们不属于的网页ID,因此我很欣赏使用该API的解决方案。

1 个答案:

答案 0 :(得分:1)

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

确保在logging in

时授予manage_pages
  

需要具有manage_pages的用户访问令牌,并且只允许检索该特定人员。

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

您可以向用户说明您使用manage_pages权限的原因。

如果你对此不满意,那么你就不走运了。

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

页面具有以下格式

  • facebook.com/username
  • facebook.com/id
  • facebook.com/pages/pagename/id

覆盖所有这些碱基后,提取用户名或ID并执行Graph API调用

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