Очистка Google диска от мусора с помощью php не работает

#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 . И когда я протестировал модифицированный скрипт, я смог подтвердить, что ящик для мусора стал пустым без ошибок. К сожалению, я не могу повторить вашу ситуацию. В вашей ситуации вы тестируете простой скрипт модифицированного скрипта? Если вы тестировали свой скрипт, включая другой скрипт, можете ли вы протестировать его с помощью простого скрипта? Как насчет этого?