REST API Google Диска - недопустимое значение разрешения только для одного пользователя

Я внедрил права доступа к файлам Google Диска в свое приложение. Все работает отлично, только для одного пользователя (электронная почта), когда я пытаюсь вставить разрешение< /а>, я получаю

неверный запрос (400): недопустимое значение разрешения

Кто-нибудь знает, почему я получаю эту ошибку только для одного пользователя? Я не вижу никаких ограничений для этого пользователя, но, возможно, я что-то упустил.

Вот моя функция разрешения на вставку (я использую клиент Google API (REST API v2)):

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;
}

Во время отладки я создал var_dump($httpRequest); перед вызовом $this->client->execute($httpRequest) и получил этот объект (я удалил адрес электронной почты пользователя, идентификатор файла и токен авторизации из объекта по соображениям безопасности и конфиденциальности):

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
}

Для меня все выглядит нормально, и, как я уже сказал, это работает для всех других пользователей. Я протестировал этот вызов с помощью Postman для того же пользователя, который вызывает у меня проблемы, и он сработал, поэтому с моим кодом должно быть что-то не так.


person Silko    schedule 23.05.2017    source источник
comment
Прежде чем мы сможем помочь вам отладить ваш код, вам нужно будет отредактировать свой вопрос и поделиться своим кодом. Недопустимое значение разрешения означает, что вы пытаетесь установить значение разрешения, которое не разрешено для этого пользователя.   -  person DaImTo    schedule 23.05.2017
comment
Я отредактировал свой пост, проверьте еще раз. Спасибо.   -  person Silko    schedule 23.05.2017


Ответы (1)


Теперь я совершенно смущен. Я неправильно проверял ввод электронной почты пользователя, поэтому в конце был пробел, и это была единственная проблема.

person Silko    schedule 23.05.2017