Я пытаюсь загрузить файл на Google Drive с помощью Drive API. Я делаю это в первый раз, поэтому я не знаю много об этом.
Я настроил .окр файл. Вот изменения, которые я сделал в .окр файл
APP_TITLE=dsse
APP_TIMEZONE="Asia/Manila"GOOGLE_CLIENT_ID="1029303670830-u70757ll7qdnhtehsrai06uld6u2p8g0.apps.googleusercontent.com"GOOGLE_CLIENT_SECRET="SI-oG6tSOg6S_jaeveyX-Avh"GOOGLE_REDIRECT_URL="http://127.0.0.1:8000/members"GOOGLE_SCOPES="email,profile,https://www.googleapis.com/auth/drive"GOOGLE_APPROVAL_PROMPT="force"GOOGLE_ACCESS_TYPE="offline"
Мой контроллер здесь
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Response;
use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;
use App\Publication as Publications;
use Session;
use App\Google;class PublicationController extends Controller
{
private $client;
private $drive;
public function __construct(Google $googl)
{
$this->client = $googl->client();
$this->client->setAccessToken(session('user.token'));
$this->drive = $googl->drive($this->client);
}
public function storeFile(Request $request){
if($request->ajax()){
if($request->file('file')){
$this->validate($request, [
'file'=> 'required|mimes:docx,doc,pdf|max:10048',
]);
$file = $request->file('file');
$mime_type = $file->getMimeType();
$fileName = time().'.'.$request->file('file')->getClientOriginalExtension();
$drive_file = new \Google_Service_Drive_DriveFile();
$drive_file->setName($fileName);
$drive_file->setMimeType($mime_type);
try {
$createdFile = $this->drive->files->create($drive_file, [
'data' => $file,
'mimeType' => $mime_type,
'uploadType' => 'multipart'
]);
$file_id = $createdFile->getId();
echo $fileName;
} catch (Exception $e) {
echo "Error occured when uploading file in drive";
}
}
}
else echo "not ajax";
}
}
Класс Google выглядит следующим образом
<?php
namespace App;
class Google
{
public function client()
{
$client = new \Google_Client();
$client->setClientId(env('GOOGLE_CLIENT_ID'));
$client->setClientSecret(env('GOOGLE_CLIENT_SECRET'));
$client->setRedirectUri(env('GOOGLE_REDIRECT_URL'));
$client->setScopes(explode(',', env('GOOGLE_SCOPES')));
$client->setApprovalPrompt(env('GOOGLE_APPROVAL_PROMPT'));
$client->setAccessType(env('GOOGLE_ACCESS_TYPE'));
return $client;
}public function drive($client)
{
$drive = new \Google_Service_Drive($client);
return $drive;
}
}
Когда я запускаю скрипт, я получаю следующую ошибку
InvalidArgumentException в строке Client.php 429: неверный токен json
В чем проблема? Как решить?
Задача ещё не решена.
Других решений пока нет …