图形API访问公共Facebook页面时返回“false”或“不支持的获取请求”

22

我在使用Facebook Graph API获取一些粉丝页面的详细信息时遇到了一些问题。

当我尝试获取粉丝页面的详细信息时,Graph API只返回了false,但现在已经返回了

{
    "error": {
        "message": "Unsupported get request.",
        "type": "GraphMethodException",
        "code": 100
     }
}
这并非所有Facebook页面的情况,只是一部分页面如此。例如,当我尝试获取此页面https://graph.facebook.com/CaptainMorganMacedonia上的详细信息时,它只返回一个错误。该页面是公共的,并且有超过25个粉丝,但我仍然无法获取该页面的详细信息。这是Facebook的问题,还是该页面存在某些错误的配置?
6个回答

33
假设页面受到酒精限制(在OP的示例中,页面是一个酒精页面),您必须使用符合酒精限制的用户的访问令牌访问该页面。
对于酒精而言,任何年龄在21岁以上的用户都应该能够做到这一点,对于某些市场,它的法定饮酒年龄较低。
在一般情况下,如果页面有人口统计数据(国家或年龄)限制其可见性,因为酒精原因而受限制,或未发布,则在尝试访问该页面的详细信息或动态时,页面或应用程序访问令牌将无法工作。
必须使用具有查看该页权限的用户访问令牌。
如果用户不符合页面管理员设置的限制,则返回false
这已经(自2012年9月以来)被替换为带有文本Unsupported get request.和代码100的OauthException。
这是一个常见错误,通常意味着隐私检查失败。对于页面,原因几乎肯定是页面未发布,限制了某些国家或年龄组,或标记为酒精页面。

23
非常感谢,我已经苦苦思索了好几个小时。Facebook真是让人头疼。 - Nick
1
简单来说,如果用户在Facebook.com看不到什么东西,我们不会让该用户通过API查看它,这意味着如果某些内容受限制,您的应用需要证明您代表可以查看内容的用户行事,这可以通过使用他们的访问令牌来实现。虽然有一些边缘情况可能并不完全合理,但总体而言,我认为这种行为是正确的,尽管可能并不明显。 - Igy
1
@Igy 但它更进一步。我使用我的用户访问令牌。我可以在Facebook上看到一个人的事件,但无法使用图形API获取它们。请参见此错误:https://developers.facebook.com/bugs/190485347743489?browse=search_50d0c18e9da038946210982 - Michał Klimczak
这与本答案中的问题毫无关系。 - Igy
你在哪里获取一个21+的API密钥,以避免“UnknownColumn”错误?我已经使用足够老的个人资料创建了一个密钥。 - Martijn
是的,我也遇到了同样的问题,原因是页面没有发布。 - Ludo - Off the record

13

一张图片胜过千言万语。

即使您只改变这些设置中的一个:

Facebook 页面设置

这将是您客户会收到的反馈:

{ "error": {
      "message": "Unsupported get request.",
      "type": "GraphMethodException",
      "code": 100
   }
}

实际上,我已经尝试更改“年龄限制”和所有不为“任何人(13)”的设置,这都会导致此问题。


3

我之前遇到了这个问题,但原因是由于国家限制造成的(尽管我在正确的国家)。移除限制后问题得以解决。 请检查是否有任何看起来不相关的限制,因为它们可能会导致阻塞。


3
看起来Graph API在尝试访问被限制资源时返回false或一些空数据。例如,Facebook粉丝页面的管理员可以通过年龄(包括关于酒精的页面的特殊设置)来限制访问:
选择年龄限制意味着任何低于指定年龄的人都无法在搜索中找到您的页面,也无法在朋友的个人资料上查看内容或以其他方式查看内容。这也意味着注销用户将无法看到您的页面。
与酒精相关的年龄限制根据用户所在地设置最低年龄。只有加拿大、韩国或尼加拉瓜的19岁以上用户,在日本、冰岛或巴拉圭的20岁以上用户,在喀麦隆、密克罗尼西亚、帕劳、所罗门群岛、斯里兰卡或美国的21岁以上用户,在印度和瑞典的25岁以上用户以及其他地方的18岁以上用户才能查看您的页面。您理解与酒精相关的年龄限制是为了方便,并且Facebook不表示使用该设置即可使您的页面在所有可见的国家/地区合法。您理解最终您负责为每个可见的国家/地区设置适当的合法年龄限制。
他们还可以通过国家来限制访问:
输入一个或多个国家,然后选择您希望页面对列出的国家中的人可见还是隐藏。输入一个或多个国家意味着注销用户将无法看到您的页面。如果没有列出任何国家,则您的页面将对所有国家/地区的人可见。您理解您有责任设置适当的国家/地区限制,以确保您页面的内容适用于您允许其在其中可见的国家/地区。
例如,如果您未登录Facebook,则无法查看此页面(您将被重定向到Facebook主页)。在Graph API中也是如此。调用:
http://graph.facebook.com/105226926239

将返回:

false

然而,如果您成功获得了一个用户访问令牌(例如从Graph API Explorer),并且假设相应的个人资料与为此页面定义的限制相匹配:

https://graph.facebook.com/105226926239?access_token=AAACEdEose0cBACIijRIMtayOiN5F58x6DxolYi8ezmpAIPORApnfQvG5Kj1ftOQhSzIgxkNxQiu4iBwozqRT3zTvswEvm0O0JobZC8AZDZD

将返回:

{
   "id": "105226926239",
   "name": "CodeReduc.com",
   "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/71056_105226926239_2230111_s.jpg",
   "link": "http://www.facebook.com/pages/CodeReduccom/105226926239",
   "likes": 1,
   "category": "Local business",
   "is_published": true
}

很遗憾,使用应用程序访问令牌无法检索此信息,这在某些情况下可能会有用。


0
除了以上所有答案之外,还要注意启用“社交发现/应用程序出现在新闻动态”设置也会触发此问题。

0

在设置中解决-->联系电子邮件:输入它。然后转到状态和审核,并将其放置在页面顶部的“您是否要使此应用程序及其所有实时功能对普通公众可用?”选项上。

还要确保未设置年龄限制+13和国家。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接