Sử dụng google drive api trong Laravel
laravel 5
1
Male avatar

athena viết ngày 31/12/2020

  1. Create a new project

Mình xin phép bỏ qua bước cài đặt project laravel vì có rất nhiều bài nói về bước này rồi. Mình sẽ để link cài đặt ở phía duới

https://laravel.com/docs/master/installation

  1. Create Google Drive Application

Để lưu trữ file trên Google Drive, bạn cần lấy đủ 4 thông tin bên trên. Để có thông tin chi tiết về cách lấy API ID, secret và refresh token, bạn tham khảo hướng dẫn sau:

Lấy Client ID and Secret
Add user test vào project, vì khi mới tạo project thì đang ở trạng thái là test. Mục này rất quan trọng nếu không add user test sẽ không thể connect được api. Sau đó làm tiếp theo các bước:

  1. Configure Google Service

Mình sử dụng package Flysystem Adapter for Google Drive

Cài đặt package cho Google Drive API V3 composer require nao-pon/flysystem-google-drive:~1.1 Mình khuyên các bạn nên sử dụng API V3, vì V3 đã có nhiều thay đổi tốt hơn V2 đồng thời nhiều hàm cũng được loại bỏ bớt các parameter không quá cần thiết. Trên doc của google V3 thì chưa có Samples cho PHP nhưng vì cơ bản V2 và V3 PHP cũng không có gì thay đổi nhiều nên bạn có thể hoàn toàn sử dụng và tham khảo lại doc PHP của V2. Một điều nữa để khuyên bạn nên dùng V3 là ở trong package vừa cài đặt trên tác giả cũng ghi rõ *For Google Drive API V2 "Deprecated" .

Sau khi cài đặt package xong, chúng ta cần: Thêm GoogleDriveServiceProvider::class vào providers trong file config/app.php

'providers' => [
// ...
App\Providers\GoogleDriveServiceProvider::class,
// ...
],
Thêm google disk vào config/filesystems.php:

'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'),
],
Cập nhật file .env Thêm ClientID, ClientSecret, RefreshToken mà bạn vừa thực hiện các bước ở trên vào file env
FILESYSTEM_CLOUD=google
GOOGLE_DRIVE_CLIENT_ID=XXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com
GOOGLE_DRIVE_CLIENT_SECRET=XXXX_ByGjXXXXX
GOOGLE_DRIVE_REFRESH_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXT1J1S5-Bv51KAUWR49M6jKmOXXXXXXXXXXX

  1. Create GoogleServiceProvider

Bạn file GoogleServiceProvider trong thư mục Providers

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class GoogleDriveServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application 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']);

        return new \Google_Service_Drive($client);
    });
}

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
    //
}

}
Giờ chúng ta code thôi !!!

  1. Get files

Để get files thì chúng ta cần có fileId của file trên google drive. Việc get files này thì có thể get được tất cả các loại file từ định dạng image, doc, excel.

$driveService = Storage::disk('google');
$file = $driveService->files->get($fileId);

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

athena

1 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!