я пытаюсь создать webhook из одного из моих приложений в php, используя curl
вот фрагмент кода, который я использую (мой токен правильный, и мне принадлежит лист 6642490389358468)
function setWebHook($token){
// API Url
// BASE_API_URL = "https://api.smartsheet.com/2.0/";
$url = self::BASE_API_URL. "webhooks";
$headers = array(
"Authorization: Bearer ". $token,
"Content-Type: application/json");
//The JSON data.
$jsonData = array(
"callbackUrl"=>"https://www.example.com/myapp/test",
"scope"=>"sheet",
"scopeObjectId"=>6642490389358468,
"version"=>1,
"events"=>[ "*.*" ]
);
//Initiate cURL.
$ch = curl_init($url);
//Encode the array into JSON.
$jsonDataEncoded = json_encode($jsonData);
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//Execute the request
$result = curl_exec($ch);
if (curl_errno($ch)) {
$apiResponse = "Oh No! Error: " . curl_error($ch);
} else {
// Assign response to variable
$apiResponse = json_decode($result);
curl_close($ch);
}
return $apiResponse;
}
но я получаю следующий ответ
{
"errorCode": 1004,
"message": "You are not authorized to perform this action.",
"refId": "x2kcvthuyfs8"}
Вы можете помочь мне решить эту проблему?
я что-то пропустил?
В коде есть одна небольшая ошибка — вам нужно передать свойство «name» обратно в ваш массив jsonData.
Что касается вопроса авторизации, я смог использовать ваш точный код с моими учетными данными Smartsheet, чтобы успешно создать веб-крючок на листе, который я создал. Дважды проверьте, что ваш токен доступа работает правильно (или вы можете выпустить новый), используя его для выполнения другого вызова API, такого как getSheet. Если маркер доступа работает, проблема заключается в разрешениях на листе, к которому вы пытаетесь добавить веб-крючок. Убедитесь, что у вас есть статус «Владелец» или «Администратор» на листе, и снова скопируйте идентификатор листа.
Я могу подтвердить, что код работает с добавлением свойства name.
Спасибо вам всем,
теперь это работает, я не включил область доступа ADMIN_WEBHOOKS при запросе моего токена $, и, конечно, я забыл свойство «name» !!