Следуя инструкциям в этом уроке, я смог загрузить файл на свой Google Дисковод через API, приоритет - загрузить его без участия пользователя, подтверждающего согласие ,Загрузить файл с помощью PHP на Google Диск с помощью API без экрана согласия
How do I authorise an app (web or installed) without user intervention? (canonical ?)
Однако я заметил, что токен обновления должен обновляться каждый раз, и по этой причине, я искал другое решение для передачи файлов без экрана согласия направляется пользователю.
В первые часы все шло хорошо, однако, теперь он не возвращает токен и, следовательно, больше не несет загрузку.
<?php
function get_access_token($force_refresh=false) {
global $client_id, $client_secret, $refresh_token, $verbose ;
if($verbose) { echo "> retrieving access token<br />" ; }
$token_filename = "/tmp/access_token_" . md5($client_id . $client_secret . $refresh_token) ;
$access_token = "" ;
if(!file_exists($token_filename) || $force_refresh===true) {
\t // no previous access token, let's get one
\t if($verbose) { echo "> getting new one<br />" ; }
\t $ch = curl_init();
\t curl_setopt($ch, CURLOPT_URL, "https://accounts.google.com/o/oauth2/token") ;
\t curl_setopt($ch, CURLOPT_PORT , 443) ;
\t \t curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false) ;
\t curl_setopt($ch, CURLOPT_POST, 1) ; \t
\t curl_setopt($ch, CURLOPT_POSTFIELDS, "client_id={$client_id}&client_secret={$client_secret}&refresh_token={$refresh_token}&grant_type=refresh_token") ;
\t curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
\t curl_setopt($ch, CURLOPT_HEADER, true) ;
\t curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded")) ;
\t \t
\t \t echo "Curl error: " . curl_error($ch) . "<br />";
\t $response = curl_exec($ch) ;
\t $response = parse_response($response) ;
\t // todo: make sure that we got a valid response before retrieving the access token from it
\t $access_token = json_decode($response["body"]) ;
\t $access_token = $access_token->access_token ;
\t file_put_contents($token_filename, $access_token) ;
\t } else {
\t \t // we already have something cached, with some luck it's still valid
\t $access_token = file_get_contents($token_filename) ;
\t if($verbose) { echo "> from cache<br />" ; }
\t }
\t if($access_token=="") {
\t \t echo "ERROR: problems getting an access token<br />" ;
\t \t exit(1) ;
\t }
return $access_token ;
}
?>
Можно ли интегрировать свое приложение с Google Диска без экрана согласия и без необходимости всегда возобновлять это СИМВОЛ?
Да, я полностью согласен с вами, но моя проблема в том, что он не позволяет мне запускать этот API, мои файлы не поступают на мой Google Диск, как и раньше. Может ли Google сделать какие-то блокировки для моего домена или что-то еще? Я даже изменил все данные на другой аккаунт, и даже тогда проблема продолжалась. –
Вам нужно будет объяснить, что «это не позволяет мне запускать этот API», а также «мои файлы не поступают на мой Google Диск, как и раньше». Возможно, опубликуйте отдельный вопрос, показывающий любые сообщения об ошибках, трассировки http и т. Д. – pinoyyid
Я не знаю, как объяснить это очень хорошо, но он выполнил загрузку, как правило, эти файлы были отображены на Google Диске, теперь они больше не отображаются, поскольку возникает ошибка при отправке файла с помощью этого API. Я использую ваш метод, чтобы получить TOKEN и заполнить его в переменных, которые находятся в этом коде ben.akrin.com/?p=2080. Для каждых действий выполняются возвращает сообщение, в моем случае, это сообщение: > Тип мима обнаружены: изображение/JPEG > получение маркеров доступа > из кэша ERROR: проблемы получения доступа токенов –