Olá! Estou desenvolvendo um projeto com foco no filesystems do Laravel, fiz a instalação da API do google para que todos os arquivos sejam salvos no Google Drive, peguei todas as credênciais no Google Console Cloud e adicionei no meu arquivo .env.
No projeto, adicionei o drive do google da seguinte maneira:
'google' => [
'driver' => 'google',
'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
'folderId' => env('GOOGLE_DRIVE_FOLDER_ID'),
],
Meu controller para o upload:
public function uploadFile(Request $request, Ufv $ufv)
{
$request->validate([
'file' => 'required|file|mimes:jpg,png,pdf,docx|max:2048'
]);
$file = $request->file('file');
$fileName = $file->getClientOriginalName();
$folderId = env('GOOGLE_DRIVE_FOLDER_ID');
$googleDrivePath = $folderId . '/' . $fileName;
try {
Gdrive::put($googleDrivePath, $file);
File::create([
'name' => $fileName,
'ufv_id' => $ufv->id,
'relatorio_mensal' => $request->input('relatorio_mensal'),
'documento' => $request->input('documento'),
'fileName' => $fileName,
'path' => $googleDrivePath,
'type' => $file->getMimeType()
]);
return back()->with('success', 'Arquivo enviado com sucesso!');
} catch (\Exception $e) {
return back()->with('error', 'Erro ao enviar o arquivo: ' . $e->getMessage());
}
}
Já na parte de acessar o token, com dd() eu recebo o error 500, quando jogo na exception retorna o erro de acesso negado/Autenticação:
Erro ao enviar o arquivo: { "error": { "code": 401, "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Login Required.", "domain": "global", "reason": "required", "location": "Authorization", "locationType": "header" } ], "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "CREDENTIALS_MISSING", "domain": "googleapis.com", "metadata": { "method": "google.apps.drive.v3.DriveFiles.Create", "service": "drive.googleapis.com" } } ] } }
Já as credênciais do Google (FolderId, ClientId, ClientSecret e RefreshToken) da seguinte maneira:
ClientId e Secret eu criei um client web:
Refresh Token:
Não encontro uma solução para essa parte de autenticação, deixei passar alguma coisa?
Para quem leu até aqui, obrigado kkkk