У меня есть страница php, которая перечисляет содержимое таблицы smartsheet для разных пользователей.
Он заполняет таблицу такой информацией, как название работы, дата начала и дата доставки. Но я также хотел бы, чтобы пользователи могли ставить флажки по окончании работы.
Когда флажок установлен, вызывается другая (очень элементарная) страница для сохранения нового значения в таблице smartsheet.
Эта страница запускается основной командой get, например так:
HTTP: //myurl/index.php colId = XXX&RowId = YYY&статус = проверено
Где используются переменные:
colId=The ID of the column to be changed
rowId=The ID of the row to be changed
checked=If the checkbox is checked
status=The value stored in the smartheet
(1 for a checked checkbox and '' for an unchecked checkbox)
Это код index.php (украден из эта почта):
$inputToken = "myInputToken";
$colId=$_GET['colId'];
$rowId=$_GET['rowId'];
if($_GET['status'] == "checked"){
$status='1';
}
else{
$status='';
}
$ch = curl_init("https://api.smartsheet.com/1.1/row/".$rowId./cells");
$header = array("Authorization: Bearer ".$inputToken,
"Content-Type: application/json",
"Assume-User: myName%40myDomainName");
$fields = '[{"columnId": $colId, "value": "'.$status.'", "displayValue": "'.$status.'"}]';
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
$result = curl_exec($ch);
print_r($result);
«Входной токен» генерируется тем же электронным письмом, которое используется в качестве электронного письма «Assume-User».
И я могу изменить значения в обычной таблице при входе в систему.
Но все равно я получаю эту ошибку при запуске веб-страницы:
{"errorCode":1030,"message":"You are unable to assume the user specified."}
Кто-нибудь знает, что я сделал не так?
Любая помощь будет очень ценится!
Есть два способа войти в систему как пользователь. Сначала вы можете войти напрямую, используя токен для этой учетной записи пользователя. Заголовки будут выглядеть так:
$header = array('Authorization: Bearer '.$userToken,
"Content-Type: application/json");
Второй вариант — использовать учетную запись администратора для входа в систему как другой пользователь. Для этого вы можете использовать заголовок accept-user вместе с токеном администратора. Заголовки будут выглядеть так:
$header = array('Authorization: Bearer '.$adminToken,
'Content-Type: application/json',
'Assume-User: someUser%40someDomain.com');
Документацию для предполагаемого пользователя можно найти Вот.
Других решений пока нет …