#php #curl #google-api #google-drive-api
#php #curl #google-api #google-drive-api
Вопрос:
Я пытаюсь очистить корзину с помощью php и Drive api v3. Код выводится без ошибок, но мусор на диске не удаляется. Вот мой код, пожалуйста, помогите мне это исправить. Спасибо за ваше время.
if($_POST['trash']) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/drive/v3/files/trash?key='.$token.'");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json',
'Authorization: Bearer ' . $token
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
};
Комментарии:
1. Ключ используется для ключа API, а не для токена доступа, если вы хотите передать токен доступа в строке запроса, которую вы бы использовали? access_token= . Токен $. Пожалуйста, отредактируйте свой вопрос и включите код, который создает токен.
2. @DaImTo Спасибо за ваш комментарий. В моем предложении я предложил использовать токен доступа в качестве заголовка запроса вместо параметра запроса. Я знаю, что на текущем этапе параметр запроса
access_token
может использоваться для метода «Files: emptyTrash» в Drive API. Могу ли я спросить вас о проблеме в моем предложении? Я хотел бы изучить этот вопрос.3. Пожалуйста, отредактируйте свой вопрос и включите код, который вы используете для создания этого токена. Лучше передать его в качестве заголовка авторизации Google отказывается от передачи токена доступа в строке запроса. Вы сделали файл. список для проверки удаленного статуса текущего пользователя?
4. Пожалуйста, не используйте нерелевантные теги — этот вопрос никоим образом не связан с самим cURL, даже если вы его используете
Ответ №1:
Я считаю, что ваша цель и текущая ситуация заключаются в следующем.
- Вы хотите использовать «Files: emptyTrash» в Drive API v3, используя curl php.
- Ваш токен доступа
$token
может использоваться для использования этого API.
Для достижения вашей цели, как насчет следующей модификации?
От:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/drive/v3/files/trash?key='.$token.'");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json',
'Authorization: Bearer ' . $token
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
Для:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/drive/v3/files/trash");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
Примечание:
- В «Files: emptyTrash» значения не возвращаются.
- Если
$token
в вашем скрипте есть ключ API, который не является токеном доступа, извлеките токен доступа и используйте его. Пожалуйста, будьте осторожны с этим.
Ссылка:
Комментарии:
1. Я пробовал это, но он все равно возвращает то же самое. Из корзины ничего не удаляется.
2. @xcoders Спасибо за ответ. Приношу извинения за неудобства. В моей среде, когда для измененного скрипта используется правильный токен доступа, я могу подтвердить, что скрипт работает. Поэтому я не могу повторить вашу ситуацию. Это связано с моим плохим навыком. Я прошу прощения за это. Итак, когда
echo curl_error($ch);
ставится передcurl_close($ch);
, какой результат вы получите?3. @xcoders Спасибо за ответ. Приношу извинения за неудобства. К сожалению, я не могу повторить вашу ситуацию. Я еще раз приношу извинения за это. В вашем случае
if($_POST['trash']) {
этоtrue
? И$token
является ли допустимый токен доступа для использования «Files: emptyTrash» в Drive API?4. Да, токен доступа действителен.
if($_POST['trash'])
не является пустым и имеет значение true.5. @xcoders Спасибо за ответ. К сожалению, из вашего ответа я не могу воспроизвести вашу ситуацию. Когда я тестировал ваш скрипт, я могу подтвердить, что возникла та же проблема. Произошла ошибка
Illegal characters found in URL
. И когда я протестировал модифицированный скрипт, я смог подтвердить, что ящик для мусора стал пустым без ошибок. К сожалению, я не могу повторить вашу ситуацию. В вашей ситуации вы тестируете простой скрипт модифицированного скрипта? Если вы тестировали свой скрипт, включая другой скрипт, можете ли вы протестировать его с помощью простого скрипта? Как насчет этого?