Как получить доступ к Smartsheet из PHP API?

Я впервые пытаюсь подключить 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>";

0

Решение

И то и другое stmcallister а также Ким предоставил хорошую информацию о том, как решить вашу проблему и некоторые вероятные причины.

На самом деле были две проблемы с кодом, который вы предоставили.

  1. Как сказал Скотт, вы должны указать на версию 2.0 API.

    $baseURL = "https://api.smartsheet.com/2.0";
    
  2. У вас есть опечатка в вашем $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>";
?>
2

Другие решения

Поиск здесь на 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.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.

0

Здравствуйте, для использования 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);
0
По вопросам рекламы [email protected]