Версия API Graph

Страницы мест

Представляет Страницы мест, принадлежащих родительской Странице компании. Например, это могут быть Страницы отдельных заведений в сети ресторанов.

Считывать эту границу контекста могут все приложения. Некоторые операции публикации доступны не всем разработчикам.

При использовании операций публикации этого API следуйте правилам:

  • Запрещено взимать плату за создание Страницы или заявление прав на нее.
  • Прежде чем клиенты смогут создать Страницу, предоставьте им всё необходимое для заявления прав на существующую Страницу, чтобы Страницы не повторялись.
  • Создавать можно только Страницы, связанные с реальным адресом. Создавать Страницы для вымышленных или виртуальных мест запрещено.
  • Если вы создаете Страницу от лица клиента, по его запросу вы должны перевести все права на управление этой Страницей клиенту.
  • Информацию об администраторах Страницы запрещено раскрывать третьим сторонам без согласия клиента, за исключением случаев, когда это необходимо в соответствии с действующим законодательством, решением суда или государственного агентства надлежащей юрисдикции либо в рамках судебного процесса.

Чтение

Graph API Explorer
GET /v21.0/{page-id}/locations HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get(
    '/{page-id}/locations',
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{page-id}/locations",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{page-id}/locations",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{page-id}/locations"
                                      parameters:params
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Разрешения

  • Для получения мест требуется любой действительный маркер доступа.

Поля

Массив объектов Страниц, каждый из которых представляет отдельное место, принадлежащее компании.

Публикация

Чтобы добавить к этому списку существующую Страницу места, выполните публикацию на этой границе контекста:

POST /v21.0/{page-id}/locations HTTP/1.1
Host: graph.facebook.com

main_page_id=%7Bpage-id%7D&store_number=12345&location_page_id=%7Bsubpage-id%7D
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{page-id}/locations',
    array (
      'main_page_id' => '{page-id}',
      'store_number' => '12345',
      'location_page_id' => '{subpage-id}',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{page-id}/locations",
    "POST",
    {
        "main_page_id": "{page-id}",
        "store_number": "12345",
        "location_page_id": "{subpage-id}"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
Bundle params = new Bundle();
params.putString("main_page_id", "{page-id}");
params.putString("store_number", "12345");
params.putString("location_page_id", "{subpage-id}");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{page-id}/locations",
    params,
    HttpMethod.POST,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"main_page_id": @"{page-id}",
  @"store_number": @"12345",
  @"location_page_id": @"{subpage-id}",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{page-id}/locations"
                                      parameters:params
                                      HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Разрешения

  • Для публикации существующих мест на Странице требуется маркер доступа к Странице.
  • Для создания новых мест и их публикации на Странице требуется маркер доступа к Странице. Эта функция доступна не всем разработчикам.

Поля

ИмяОписаниеТип

differently_open_offerings

Используется, если для параметра temporary_status установлено значение differently_open. Это означает, что компания работает иначе, чем обычно: например, если ресторан предлагает только доставку. Можно использовать один или несколько ключей перечисления: ONLINE_SERVICES, DELIVERY, PICKUP и OTHER со значением true или false. Например, если ресторан предлагает еду навынос, но временно приостанавливает доставку, параметр будет выглядеть так: differently_open_offerings:{"DELIVERY":"false", "PICKUP":"true"}.

object

hours

Рабочие часы места.

object

{day}_{number}_{status}

Один диапазон рабочих часов на день. Для каждого дня можно указать два разных диапазона рабочих часов. Параметр {day} должен быть представлен тремя первыми символами дня недели, {number} должен иметь значение 1 или 2 в зависимости от того, сколько диапазонов рабочих часов для этого дня нужно задать. Параметр {status} должен иметь значение open или close, задающее начало или конец диапазона времени. Например, можно настроить mon_1_open со значением 17:00 и mon_1_close со значением 21:15, что будет соответствовать одному диапазону рабочих часов с 17:00 до 21:15 по понедельникам.

string

ignore_warnings

Указывает, нужно ли отключать предупреждения (но не ошибки), возникающие при выполнении вызова API. Например, это может быть несоответствие широты и долготы точному адресу.

bool

is_franchise

Указывает, принадлежит ли это место франшизе.

bool

country

Страна. Обязательное поле, если не указан city_id.

string

city

Город. Обязательное поле, если не указан city_id.

string

city_id

ID города. Значение свойства key из параметров таргетинга adcity. Если оно не указано, необходимо указать city или country (для мест в США также необходимо указать state и zip).

int

latitude

Географическая широта в виде десятичного числа. Обязательно для location.

string

location

Место, к которому относится Страница. Обязательное поле, если не указан location_page_id. В словаре должен быть указан ключ street (точный адрес). Также должен быть указан city_id или все параметры city, state и country (state можно не указывать, если адрес находится не в США). Поле zip также обязательно только для адресов внутри США. Подробные сведения о том, как сгенерировать ID города, см. далее в этом документе.

object

longitude

Географическая долгота в виде десятичного числа. Обязательно для location.

string

state

Название штата или другой аналогичной административной единицы.

string

street

Точный адрес. Обязательно для location.

string

zip

Почтовый индекс места (или его местный эквивалент).

string

location_page_id

ID Страницы Facebook, которую нужно добавить в качестве места. Если это поле не указано, для создания новой Страницы места нужно указать location, place_topics и phone.

numeric string

main_page_id

ID Страницы Facebook, которая выступает родительской по отношению ко всем местам. Обязательное поле.

numeric string

permanently_closed

Указывает, закрыто ли это место навсегда.

bool

phone

Номер телефона места. Обязательное поле, если не указан location_page_id.

string

pickup_options

Список вариантов получения заказа, доступных в этом месте.

enum[] {CURBSIDE, IN_STORE, OTHER}

place_topics

Тематика места и категории, в которые оно входит. Обязательное поле, если не указан location_page_id.

int[]

store_number

Заданный разработчиком произвольный ID для этого места. Обычно применяется для связывания с внутренней базой данных мест. Обязательное поле.

int

temporary_status

Если режим работы компании, связанной со Страницей, отличается от обычного, в этом поле указывается, как именно. Если задано значение differently_open, установите статус в параметре differently_open_offerings.

enum {differently_open, temporarily_closed, operating_as_usual, no_data}

Ответ

В случае успеха приложение получит следующий ответ:

{
  "success": true
}

В противном случае возвращается соответствующее сообщение об ошибке.

Удаление

Удалить Страницу места из списка мест родительской Страницы можно с помощью этой границы контекста:

DELETE /v21.0/{page-id}/locations HTTP/1.1
Host: graph.facebook.com

main_page_id=%7Bpage-id%7D&store_number=12345&location_page_id=%7Bsubpage-id%7D
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->delete(
    '/{page-id}/locations',
    array (
      'main_page_id' => '{page-id}',
      'store_number' => '12345',
      'location_page_id' => '{subpage-id}',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{page-id}/locations",
    "DELETE",
    {
        "main_page_id": "{page-id}",
        "store_number": "12345",
        "location_page_id": "{subpage-id}"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
Bundle params = new Bundle();
params.putString("main_page_id", "{page-id}");
params.putString("store_number", "12345");
params.putString("location_page_id", "{subpage-id}");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{page-id}/locations",
    params,
    HttpMethod.DELETE,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"main_page_id": @"{page-id}",
  @"store_number": @"12345",
  @"location_page_id": @"{subpage-id}",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{page-id}/locations"
                                      parameters:params
                                      HTTPMethod:@"DELETE"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Разрешения

  • Для удаления мест с родительской Страницы необходим маркер доступа к Странице.

Поля

Все поля обязательные.

Имя Описание Тип

main_page_id

ID основной Страницы Facebook для этого места.

numeric string

store_number

ID места, заданный разработчиком.

numeric string

location_page_id

ID места, заданный Facebook.

numeric string

Ответ

В случае успеха:

{
  "success": true
}

В противном случае возвращается соответствующее сообщение об ошибке.

Обновление

Эта конечная точка поддерживается для нового формата Страниц.

POST /v21.0/{page-id}/locations HTTP/1.1
Host: graph.facebook.com

main_page_id=%7Bpage-id%7D&store_number=12345&location_page_id=%7Bsubpage-id%7D
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{page-id}/locations',
    array (
      'main_page_id' => '{page-id}',
      'store_number' => '12345',
      'location_page_id' => '{subpage-id}',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{page-id}/locations",
    "POST",
    {
        "main_page_id": "{page-id}",
        "store_number": "12345",
        "location_page_id": "{subpage-id}"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
Bundle params = new Bundle();
params.putString("main_page_id", "{page-id}");
params.putString("store_number", "12345");
params.putString("location_page_id", "{subpage-id}");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{page-id}/locations",
    params,
    HttpMethod.POST,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"main_page_id": @"{page-id}",
  @"store_number": @"12345",
  @"location_page_id": @"{subpage-id}",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{page-id}/locations"
                                      parameters:params
                                      HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Разрешения

  • Для обновления мест на родительской Странице необходим маркер доступа к Странице.

Поля

Для обновления в запрос нужно добавить все обязательные поля для публикации и все другие поля публикации, значение которых нужно изменить.

Ответ

В случае успеха:

{
  "success": true
}

В противном случае возвращается соответствующее сообщение об ошибке.