当我尝试修改Smartsheet时出现错误1030

时间:2015-04-07 16:05:40

标签: php smartsheet-api smartsheet-api-1.1

我有一个php页面,列出了不同用户的智能表内容。 它使用诸如作业名称,开始日期和交付日期之类的信息填充表格。但我也希望用户能够在完成工作时勾选一个复选框。

选中复选框后,会调用另一个(非常简陋的)页面将新值存储到智能表中。

此页面由以下基本get命令触发:

http://myurl/index.php?colId=XXX&rowId=YYY&status=checked

使用的变量是:

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的代码(从this post被盗):

$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);

“输入令牌”由用作“假设用户”电子邮件的同一电子邮件生成。 我可以在登录时更改常规智能表中的值。 但是当我运行网页时,我仍然会收到此错误:

{"errorCode":1030,"message":"You are unable to assume the user specified."}

有谁知道我做错了什么?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

以用户身份登录有两种方法。首先,您可以使用该用户帐户的令牌直接登录。标题看起来像:

$header = array('Authorization: Bearer '.$userToken,
    "Content-Type: application/json");

第二个选项是使用管理员帐户以另一个用户身份登录。为此,您可以使用assume-user标头和管理员令牌。标题看起来像:

$header = array('Authorization: Bearer '.$adminToken,
    'Content-Type: application/json',
    'Assume-User: someUser%40someDomain.com');

可以找到假设用户的文档here