2017-05-23 5 views
1

私のアプリケーションにGoogleドライブのファイルアクセス権を実装しました。すべては私がinsert a permissionしようとすると、私が得る、唯一のユーザー(電子メール)のために、完璧に動作GoogleドライブREST API - 1人のユーザーのみの権限値が無効

不正な要求(400):誰もが、私はこれを取得する理由のアイデアを持っている

無効許容値1人のユーザーだけのエラー?このユーザーには何の制限も表示されませんが、多分私は何かを見逃しました。ここで

は(私がgoogle api client(RESTのAPI v2の)を使用しています)私のinsertパーミッション機能である:

public function insert_permission($FileID, $Value, $Type, $Role, $OptParams = array(), $Service = NULL) { 
    if(empty($Service)) { 
     $Client = $this->get_client_sa(); 
     $Service = new Google_Service_Drive($Client); 
    } 

    $NewPermission = new Google_Service_Drive_Permission(); 
    $NewPermission->setValue($Value); 
    //$NewPermission->setEmailAddress($Value); 
    $NewPermission->setType($Type); 
    // commenter additional role 
    if($Role == "commenter") { 
     $Role = "reader"; 
     $NewPermission->setAdditionalRoles(["commenter"]); 
    } 
    $NewPermission->setRole($Role); 

    $i = 0; 
    $maxTries = 3; 
    $ErrorMessage = ""; 
    while($i < $maxTries) { 
     try { 
      return $Service->permissions->insert($FileID, $NewPermission, $OptParams); 
     } catch (Exception $E) { 
      $ErrorMessage = $E->getMessage(); 
      if($E->getCode() != 500) 
       $i++; 
     } 
    } 

    $this->session->set_userdata("error", $ErrorMessage); 
    return $E; 
} 

私は$this->client->execute($httpRequest)を呼び出す前にvar_dump($httpRequest);を作成し、デバッグし、私は、このオブジェクトを得ながら(私は、ユーザーの電子メールを削除しましたセキュリティとプライバシー上の理由のためのオブジェクトから、ファイルIDと認証トークン):

object(Google_Http_Request)#69 (15) { 
    ["batchHeaders":"Google_Http_Request":private]=> 
    array(3) { 
    ["Content-Type"]=> 
    string(16) "application/http" 
    ["Content-Transfer-Encoding"]=> 
    string(6) "binary" 
    ["MIME-Version"]=> 
    string(3) "1.0" 
    } 
    ["queryParams":protected]=> 
    array(0) { 
    } 
    ["requestMethod":protected]=> 
    string(4) "POST" 
    ["requestHeaders":protected]=> 
    array(2) { 
    ["content-type"]=> 
    string(31) "application/json; charset=UTF-8" 
    ["authorization"]=> 
    string(183) "token_string" 
    } 
    ["baseComponent":protected]=> 
    string(26) "https://www.googleapis.com" 
    ["path":protected]=> 
    string(72) "/drive/v2/files/file_id/permissions" 
    ["postBody":protected]=> 
    string(64) "{"role":"writer","type":"user","value":"user_email"}" 
    ["userAgent":protected]=> 
    NULL 
    ["canGzip":protected]=> 
    NULL 
    ["responseHttpCode":protected]=> 
    NULL 
    ["responseHeaders":protected]=> 
    NULL 
    ["responseBody":protected]=> 
    NULL 
    ["expectedClass":protected]=> 
    string(31) "Google_Service_Drive_Permission" 
    ["expectedRaw":protected]=> 
    bool(false) 
    ["accessKey"]=> 
    NULL 
} 

すべてが私にはOKに見えると私はすでに言ったように、それは他のすべてのユーザーのために動作します。私は問題を与えている同じユーザーのためにこの呼び出しをPostmanとテストしました。それがうまくいったので、私のコードに何か問題があるはずです。

+0

コードをデバッグする前に、質問を編集してコードを共有する必要があります。 「無効な権限値」は、そのユーザーに許可されていない権限の値を設定しようとしていることを意味します。 – DaImTo

+0

投稿を編集しました。もう一度確認してください。ありがとうございました。 – Silko

答えて

1

今私は完全に恥ずかしいです。私はユーザーの電子メールの入力を正しく検証していないので、最後にスペース文字があり、それが唯一の問題でした。

関連する問題