Подключение Webhook
-
Перейдите в раздел Подключить аккаунт, выберите 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": [],}