Facebook API: определите, опубликована / не опубликована страница Facebook - PullRequest
7 голосов
/ 12 января 2012

Какой надежный способ проверить, опубликована или неопубликована страница Facebook с помощью API Graph?В настоящее время я делаю это:

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

и проверяю, является ли возвращаемое значение "ложным".Если оно ложное, я делаю вывод, что оно не опубликовано, и если оно возвращает объект графа, то делаю вывод, что оно опубликовано.Но сейчас я замечаю, что многие опубликованные страницы возвращают «false» из вышеприведенного запроса.

Вот пример:

эта страница опубликована: http://www.facebook.com/AjiRestaurant

но эти запросы возвращают false: http://graph.facebook.com/104433516257517 (с использованием идентификатора страницы) http://graph.facebook.com/AjiRestaurant (с использованием имени пользователя страницы)

Каков наилучший способ проверить, опубликована ли страница?*

Ответы [ 5 ]

3 голосов
/ 11 марта 2013

Внесите это в запрос FQL на http://developers.facebook.com/tools/explorer

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

, который выберет все страницы в вашем аккаунте и проверит, опубликованы ли они, вернув все неопубликованные страницы в списке.

2 голосов
/ 24 января 2012

Оказывается, что нет никакого известного способа проверить, является ли страница опубликованной / неопубликованной. API графика http://graph.facebook.com/{page_id} вернет false, если выполнено любое из следующих условий:

  • Страница не опубликована
  • Страница имеет ограничения по стране
  • Страница имеет возрастные ограничения

Если и только если ни одна из указанных выше настроек не применима, то http://graph.facebook.com/{page_id} вернет граф объектов.

Примечание: я предполагаю, что токен доступа с разрешением manage_pages не используется для вызовов API выше. С правильным токеном доступа https://graph.facebook.com/{page_id} вернет граф объектов, независимо от того, есть ли у Страницы ограничения или нет.

0 голосов
/ 18 января 2012

Получить страницу с помощью Graph 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
}
0 голосов
/ 24 января 2012

Вы сможете увидеть страницу только в том случае, если вы используете access_token, который может видеть страницу в запросе.

Вы всегда будете видеть только те страницы, которые увидели бы пользователь access_tokenна Фейсбуке.

Использование моего собственного access_token в приведенных выше примерах, например, по-прежнему дает false для AjiRestaurant, но я получу информацию о KeystoneLight так же хорошо, как мой счет соответствует ограничениям.

0 голосов
/ 18 января 2012

Вы можете использовать следующее, но оно работает, когда у вас есть разрешение 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);

                    });
...