Facebook API:确定Facebook页面是否已发布/未发布

时间:2012-01-12 18:46:17

标签: facebook facebook-graph-api facebook-page

使用图表API检查Facebook页面是否已发布或未发布的可靠方法是什么?我目前这样做:

http://graph.facebook.com/ {PAGE_ID}

并检查返回值是否为“false”。如果它是假的,我得出结论它是未发布的,如果它返回一个图形对象,则得出结论它已发布。但我现在注意到,许多已发布的页面都会从上述请求中返回“false”。

以下是一个例子:

此页面已发布:http://www.facebook.com/AjiRestaurant

但这些请求返回false: http://graph.facebook.com/104433516257517(使用页面ID) http://graph.facebook.com/AjiRestaurant(使用页面用户名)

检查网页是否已发布的最佳方式是什么?

5 个答案:

答案 0 :(得分:3)

http://developers.facebook.com/tools/explorer

上的FQL查询下打孔
SELECT page_id, name, username, is_published
   FROM page 
   WHERE page_id IN 
      (SELECT page_id FROM page_admin WHERE uid = me()) 
   AND is_published=""
   ORDER BY fan_count DESC

这将选择您帐户中的所有页面并检查它们是否已发布,并将所有未发布的页面返回到列表中。

答案 1 :(得分:2)

事实证明,没有已知方法可以具体检查页面是否已发布/未发布。如果满足以下任何条件,则图形API http://graph.facebook.com/ {page_id}将返回false:

  • 页面未发布
  • 页面有国家/地区限制
  • 页面有年龄限制

当且仅当上述设置均不适用时,http://graph.facebook.com/ {page_id}将返回对象图。

注意:我假设上面的API调用没有使用具有manage_pages权限的访问令牌。使用适当的访问令牌,https://graph.facebook.com/ {page_id}将返回对象图,无论Page是否有限制。

答案 2 :(得分:0)

您可以使用以下内容,但在页面上拥有manage_pages权限时,它可以正常运行     http://graph.facebook.com/{page_id}/settings

使用manage_pages权限

尝试此代码
FB.api('/me/accounts', function (resp) {
                        //var txtpageid = 
                        if (txtpageid != '') {
                            FBactualID = '';
                            for (var i = 0, l = resp.data.length; i < l; i++) {
                                var page = resp.data[i];
                                if (page.id == txtpageid) {
                                    FBactualID = txtpageid;
                                    varFBResponseFlag = true;
                                    //alert('inside the page id validation');
                                }
                            }
                        }
                        getCheckedValue(FBactualID);

                    });

答案 3 :(得分:0)

使用图谱API获取页面(使用cURL作为系统调用,HTTPClient使用Rails,或$.getJSON()使用jQuery,例如)http://graph.facebook.com/PAGE_ID。未发布的页面将返回false,已发布的页面将返回JSON数组信息。

这不需要任何访问权限或权限。

使用cURL(命令行)

$ curl http://graph.facebook.com/UNPUBLISHED_PAGE_ID
false
$ curl http://graph.facebook.com/PAGE_ID
{"id":"1234","name":"Test Page","picture":....

使用HTTPClient(使用Rails)

HTTPClient.get("http://graph.facebook.com/UNPUBLISHED_PAGE_ID").body
# false
HTTPClient.get("http://graph.facebook.com/PAGE_ID").body
# "{\"id\":\"1234\",\"name\":\"Test Page\",\"picture\"....

使用$ .getJSON()(jQuery)

$.getJSON("http://graph.facebook.com/UNPUBLISHED_PAGE_ID", function (data) {
  console.log(data); // false
}
$.getJSON("http://graph.facebook.com/PAGE_ID", function (data) {
  console.log(data); // JSON Object with page info
}

答案 4 :(得分:0)

如果您使用可以在请求中查看该页面的access_token,您将只能看到该页面。

您将始终只能看到在Facebook上使用access_token用户看到的页面。

例如,在上面的示例中使用我自己的access_token仍会为AjiRestaurant提供false,但我将获得KeystoneLight的信息,因为我的帐户符合限制条件。