Перейдите в раздел Подключить аккаунт, выберите Webhook.
Заполните данные.
Имя веб-узла: любое произвольное имя, используется для удобства отображения данного аккаунта в списке всех аккаунтов.URL-адрес: адрес на который будет уходить запрос для подключение аккаунта и публикации Webhook.
Секретный токен: необходим для аутентификации запросов клиента, в Headers запроса мы отправляем x-hub-signature который необходимо проверить и сравнить на стороне клиента.
Подтверждение домена при подключении аккаунта. На Ваш сервер будет отправлен POST-запрос, содержащий JSON: {"type": "confirmation", "project_id": id-вашего-проекта}. Сервер должен вернуть строку: 1qsRgoUgt.
Проверка Секретного токена на стороне клиента, пример на PHP.
<?
public const CLIENT_SECRET_KEY = '{Ключ который указали в поле Секретный токен при подключении аккаунта}';
/**
* @return bool
*/
public function checkSignature()
{
$data = getPayload();
$expectedSignature = hash_hmac('sha1', $data ? json_encode($data) : '', self::CLIENT_SECRET_KEY);
$headerSignature = getRequestHeaders('x-hub-signature');
$signature = strlen($headerSignature) === 45 && strpos($headerSignature , 'sha1=') === 0 ? substr($headerSignature, 5) : '';
return hash_equals($signature, $expectedSignature);
}
/**
* @return array
*/
private function getPayload()
{
$data = file_get_contents('php://input');
return json_decode($data, true);
}
/**
* @return string|null
*/
private function getRequestHeaders($headerCode)
{
$requestHeaders = apache_request_headers();
return isset($requestHeaders[$headerCode]) ? $requestHeaders[$headerCode] : null;
}
?>При публикации поста на Ваш сервер будет POST-запрос, содержащий JSON.
{
"action": "create_post",
"project_id": int,
"id": int,
"type": string,
"title": string,
"content": string,
"location": {
"id": int,
"name": string,
"description": string,
"lat": float,
"lng": float
},
"attaches": [],
}
Автор: Tatiana
Обновлено больше недели назад