Cấu hình tài khoản google developer
Enable google drive api trong library
Chọn Credentials -> tạo 1 Oauth client ID , trong phần URIs điền link này vào: https://developers.google.com/oauthplayground (ko thừa hoặc thêm ký tự nào ở phía cuối link). Lưu lại ClientID và ClientSecret ở phía góc bên phải lại để dùng cho phần cấu hình file .env
Truy cập vào link https://developers.google.com/oauthplayground , ở step 1 chọn theo thứ tự như trong hình (nút ở số 5 sẽ enable khi điền xong 2 trường ở số 4) , sau khi click vào số 5 sẽ có yêu cầu xác minh quyền đối với tài khoản google , cứ cho phép hết là được.
Click vào nút: exchange authorization code for tokens để lấy RefreshToken ở ô phía dưới (đồng thời check vào checkbox như trong hình)
Thêm các dòng sau vào file .env , với các tham số đã có tương ứng từ các bước trên:
FILESYSTEM_CLOUD=google
GOOGLE_DRIVE_CLIENT_ID=
GOOGLE_DRIVE_CLIENT_SECRET=
GOOGLE_DRIVE_REFRESH_TOKEN=
GOOGLE_DRIVE_FOLDER= nhập tên folder drive vào đây (nếu folder ko tồn tại , sẽ tự động có folder mới được tạo với tên điền ở đây)
Cấu hình + code laravel
Cài đặt package: https://github.com/masbug/flysystem-google-drive-ext
Tạo 1 file Providers mới (hoặc khai báo luôn trong file AppServiceProvider cũng được) với đoạn code sau cho vào hàm boot():
Code upload 1 file trên local lên drive:
$filename = 'test.png';
$filedata = \File::get(storage_path('app/public/'.$filename)); /* truyền đường dẫn tới file cần upload vào đây */
\Storage::disk('google')->put('ten_file',$filedata); /* Nếu muốn file ở trạng thái public thì truyền thêm tham số thứ 3 là 'public' */
Chi tiết các hàm khác thao tác với drive có thể xem TẠI ĐÂY
Bài viết demo trên laravel 9.0 , php 8.0