Я впервые пытаюсь подключить Sheet из Smartsheet, используя API с PHP.
Я не могу подключиться и дать мне эту ошибку
Примечание. Попытка получить свойство необъекта в C: \ xampp \ htdocs \ smartsheet \ test.php в строке 22
Переменная $sheetObj
пустой.
И в Authorization: Bearer
, что значит Bearer
средства? Это маркерное имя или всегда носитель?
Мой план на будущее — записать в строку smartsheet с помощью PHP. Кто-нибудь может дать мне совет, что пошло не так с моим кодом?
$baseURL = "https://api.smartsheet.com/1.1";
$sheetsURL = $baseURL . "/sheets/";
$getSheetURL = $baseURL . "/sheet/xxxxxxxxxxx";
$rowsURL = $baseURL . "/sheet/xxxxxxxxxxx/rows";
$accessToken = "xxxxxxxxxxxxxxxxxx";
// Create Headers array for cURL
$headers = array(
"Authorization: Bearer " . $accessToken,
"Content-Type: application/json");
$curlSession = curl_init($getSheetURL);
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);
$getSheetResponseData = curl_exec($curlSession);
$sheetObj = json_decode($getSheetResponseData);
echo "<h1>Sheet name: ". $sheetObj->name ."</h1>";
И то и другое stmcallister а также Ким предоставил хорошую информацию о том, как решить вашу проблему и некоторые вероятные причины.
На самом деле были две проблемы с кодом, который вы предоставили.
Как сказал Скотт, вы должны указать на версию 2.0 API.
$baseURL = "https://api.smartsheet.com/2.0";
У вас есть опечатка в вашем $getSheetURL
, Как задокументировано Вот URL-адрес /sheets/{sheetId}
, Таким образом, ваш код должен иметь следующее:
$getSheetURL = $baseURL. "/sheets/xxxxxxxxxxx";
Вот ваш код в рабочем состоянии. Не забудьте заменить YOUR_TOKEN
а также взглянуть на вывод из var_dump
(который я добавил в ваш код), чтобы увидеть, какое сообщение он вам дает.
<?php
$baseURL = "https://api.smartsheet.com/2.0";
$getSheetURL = $baseURL. "/sheets/4925037959505796";
$accessToken = "YOUR_TOKEN";
$headers = array("Authorization: Bearer ". $accessToken);
$curlSession = curl_init($getSheetURL);
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);
$getSheetResponseData = curl_exec($curlSession);
// Remove this line when done debugging
var_dump($getSheetResponseData);
$sheetObj = json_decode($getSheetResponseData);
echo "<h1>Sheet name: ". $sheetObj->name ."</h1>";
?>
Поиск здесь на SO для (частичного) сообщения об ошибке «Попытка получить свойство необъекта« и вы увидите много похожих сообщений. По сути, эта ошибка означает, что ваш код обрабатывает что-то как объект, который на самом деле не является объектом. Это произойдет, например, при попытке доступа к name
собственностью $sheetObj
если запрос API ранее не был выполнен по какой-либо причине, а содержимое $sheetObj
поэтому на самом деле не является объектом.
Я не очень знаком с PHP, но я подозреваю (на основании сообщения об ошибке в сочетании с тем, что вы говорите «var_dump($getSheetResponseData)
является Bool(false)
) что запрос «Получить лист» может не возвращать успешный ответ. Чтобы устранить неполадки, я бы предложил вам попробовать выполнить точно такой же запрос «Получить лист» (т. Е. С идентичным URI, включая идентификатор листа), используя такой инструмент, как Postman (https://www.getpostman.com/) или через командную строку с помощью cURL, и посмотрите, получите ли вы успешный ответ. Если вы можете заставить ваш запрос работать через Postman или cURL, вам будет просто обновить код, чтобы отправить тот же запрос, что приведет к успешному ответу. См. Этот раздел документации по API Smartsheet для получения информации о методах устранения неполадок API с использованием Postman или cURL: http://smartsheet-platform.github.io/api-docs/#api-troubleshooting.
Версия 1.1 API Smartsheet больше не поддерживается. Вы хотите использовать версия 2.
Чтобы сделать это просто изменить $baseURL
к этому:
$baseURL = "https://api.smartsheet.com/2.0";
Кроме того, каждый из объектов в API будет представлен множеством конечных точек. Итак, чтобы получить лист, вы будете использовать:
$getSheetURL = $baseURL. "/sheets/xxxxxxxxxxx";
Чтобы получить строки, вы будете использовать:
$rowsURL = $baseURL. "/sheets/xxxxxxxxxxx/rows";
Носителем является тип заголовка авторизации что вы передаете API, и тип, который требуется API Smartsheet.
Здравствуйте, для использования API-соединения smartsheet с PHP, используется версия API 2.0, так как более старая версия устарела, код для подключения выглядит следующим образом:
$baseURL = "https://api.smartsheet.com/2.0/sheets";
// Insertar access token generado en SmartSheet
$accessToken = "YOUR_TOKEN";
// Creación del Headers Array para el Curl
$headers = array(
"Authorization: Bearer $accessToken",
"Content-Type: application/json");
//Conexión de la API de SmartSheet
$curlSession = curl_init($baseURL);
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
//Establece la sesión del Curl
$smartsheetData = curl_exec($curlSession);// Asignar respuesta a un objeto PHP
$createObj = json_decode($smartsheetData);