2

さまざまなユーザーの smartsheet コンテンツを一覧表示する php ページがあります。ジョブの名前、開始日、配達日などの情報をテーブルに入力します。しかし、仕事が終わったら、ユーザーがチェックボックスをオンにできるようにしたいと思います。

チェックボックスをオンにすると、別の (非常に初歩的な) ページが呼び出され、新しい値が smartsheet に保存されます。

このページは、次のような基本的な 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 のコードです (この投稿から盗みました):

$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」電子メールとして使用されるのと同じ電子メールによって生成されます。また、ログインしているときに通常のスマート シートの値を変更できます。しかし、Web ページを実行すると、次のエラーが表示されます。

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

私が間違ったことを誰か知っていますか?

どんな助けでも大歓迎です!

4

1 に答える 1

4

ユーザーとしてログインするには、2 つの方法があります。まず、そのユーザー アカウントのトークンを使用して直接ログインできます。ヘッダーは次のようになります。

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

2 番目のオプションは、管理者アカウントを使用して別のユーザーとしてログインすることです。これを行うには、assume-user ヘッダーと管理者のトークンを使用できます。ヘッダーは次のようになります。

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

assume-user のドキュメントは、ここにあります。

于 2015-04-07T17:55:01.087 に答える