Google Drive REST API — неверное значение разрешения только для одного пользователя

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

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

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

Вот моя функция разрешения на вставку (я использую клиент Google API (API REST 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
}

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

1

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector