sử dụng storage google drive trong laravel phần 1. ở phần này chúng ta sẽ thiết lập các cài đặt trước.

sử dụng storage google drive trong laravel - part 1

2020-11-06 2354 lượt xem
Trương Thanh Hùng

sử dụng storage google drive trong laravel 

Sử dụng Google Drive làm filesystem driver trong Laravel

Cài đặt pakage để tương tác với Google Drive - Flysystem Google Drive :

composer require nao-pon/flysystem-google-drive:~1.1 (For Google Drive API V3)

composer require nao-pon/flysystem-google-drive:~1.0.0 (For Google Drive API V2)

Ở đây mình sẽ dùng với Google Drive API v3

Tạo Adapter và Service Provider của Google Drive

Mở config/filesystems.php thêm thông tin cấu hình sau:

 


'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'),
        ],

tạo mới 1 provider với tên GoogleDriveServiceProvider bằng php artisan : 

php artisan make:provider GoogleDriveServiceProvider

sửa lại code của provider vừa tạo thành 

 



namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Google_Client;
use Google_Service_Drive;
use League\Flysystem\Filesystem;
use Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter;
use Illuminate\Support\Facades\Storage;

class GoogleDriveServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        Storage::extend('google', function($app, $config) {
            $client = new Google_Client();
            $client->setClientId($config['clientId']);
            $client->setClientSecret($config['clientSecret']);
            $client->refreshToken($config['refreshToken']);
            $service = new Google_Service_Drive($client);
 
            $options = [];
            if (isset($config['teamDriveId'])) {
                $options['teamDriveId'] = $config['teamDriveId'];
            }
 
            $adapter = new GoogleDriveAdapter($service, $config['folderId'], $options);
 
            return new Filesystem($adapter);
        });
    }
}

muốn cái provider chạy được thì vào \config\app.php sửa khúc này 

'providers' => [

........

        App\Providers\GoogleDriveServiceProvider::class,

    ],

vào .env sửa lại như sau: 



FILESYSTEM_CLOUD=google
GOOGLE_DRIVE_CLIENT_ID=187185*********************************6part83j5frb4v.apps.googleusercontent.com
GOOGLE_DRIVE_CLIENT_SECRET=y0u*********rVgA
GOOGLE_DRIVE_REFRESH_TOKEN=**************PKIyNoJBeCPgDJQNVhPdG4nGQ
GOOGLE_DRIVE_FOLDER_ID=***********zvpzOj5Wx

để có các thông số điền vào file .env chúng ta cùng đến part 2 của bài viết: https://ebudezain.com/su-dung-storage-google-drive-trong-laravel-part-2 

nếu bạn đã có các thông số file env thì qua luôn phần 3 để thao tác với google drive

https://ebudezain.com/su-dung-storage-google-drive-trong-laravel-part-3

bài viết trong chủ đề