Ingin membuat sendiri aplikasi sederhana untuk upload file ke Google Drive kita menggunakan script PHP? Tutorial ini akan menjelaskan secara detil langkah demi langkah pembuatan aplikasinya. Untuk mengintegrasikan aplikasi yang dibuat dengan PHP ke Google Drive nantinya menggunakan Google API. Meskipun agak ribet sedikit, tapi tidak sulit kok membuatnya.
Sebelum kita mulai membuat script PHP nya, terlebih dahulu akan disampaikan beberapa hal yang perlu dipersiapkan khususnya untuk keperluan integrasinya dengan Google API. Kebutuhan dasar yang diperlukan antara lain:
- Akun Google
- PHP dengan versi minimal 5.4, lebih tinggi versinya lebih baik
- OAuth Credential file
- PHP Google API Client Module
File oauth credentials adalah semacam file yang berisi data dalam format JSON yang nantinya diperlukan ketika proses login ke Google API via oauth (open authentication) melalui aplikasi yang kita buat .
Adapun PHP Google API Client Module adalah kumpulan library-library yang dibuat untuk platform PHP, untuk keperluan integrasi dengan layanan Google via Google API.
Membuat OAuth Credential File
Untuk membuat file ini, kita bisa melakukannya melalui Google API Console. Sebelum kita membuatnya, misal diasumsikan nantinya kita akan membuat aplikasi upload filenya di url ‘http://localhost/gdrive/upload.php’. URL aplikasi ini nantinya akan diperlukan ketika pembuatan OAuth Credential file, karena URL ini akan diregisterkan terlebih dahulu di Google API.
Baik, selanjutnya kita bisa mulai proses membuat file OAuth Credentialnya. Setelah masuk ke Google API Console, silakan masuk ke menu ‘Credentials’ yang ada di sidebar sebelah kiri.

Setelah itu klik ‘Create Credentials’ yang ada di menu paling atas halaman, kemudian pilih submenu ‘OAuth client ID’

Proses berikutnya adalah menentukan tipe aplikasi, dalam hal ini karena kita akan membuat aplikasi web maka dipilih ‘Web Application’ di bagian ‘Application Type’. Isikan pula nama aplikasinya. Nama aplikasi pada prinsipnya bebas, misalkan dalam contoh ini kita beri nama ‘MyApp01’.

Masih di form yang sama, lihat di bagian ‘Authorized redirect URIs’. Pada bagian ini isikan URL dari aplikasi yang akan kita buat, yaitu ‘http://localhost/gdrive/upload.php’

Setelah selesai, silakan klik tombol ‘Create’.
Apabila berhasil, maka akan muncul nama aplikasi yang tadi kita buat. Selanjutnya silakan diunduh file tersebut melalui link yang disediakan.

Setelah file tersebut diunduh, akan kita dapatkan sebuah file .json dengan nama file yang cukup panjang (berawalan client_secret_XXXXXX.json) di mana nama file tersebut merupakan client ID dari aplikasi kita. Karena nama filenya cukup panjang, maka bisa direname nama filenya misalkan dengan nama ‘oauth-credentials.json‘
Mendapatkan PHP Google API Client Module
Setelah file OAuth Credential file didapatkan, langkah berikut nya adalah mengunduh library Google API Client Module untuk platform PHP. Cara untuk mengunduh library ini sebenarnya ada 2 cara, yaitu bisa menggunakan composer, atau mengunduhnya secara manual di Github.
Namun, dari eksperimen yang saya coba dari keduanya. Untuk pengunduhan lewat composer sepertinya kurang kompatibel dengan PHP 7.4 karena ada beberapa function yang deprecated. Sehingga saya putuskan untuk menggunakan cara pengunduhan secara manual. Dalam hal ini saya menggunakan Google API Client v2.4.1.
Setelah file Google API Client diunduh, selanjutnya diektrak di komputer kita. Pada hasil ekstraksi akan diperoleh dua folder yaitu ‘vendor’ dan ‘src’, Kedua folder ini nantinya akan dipakai di aplikasi yang akan dibuat.
Mulai Coding…
OK, sekarang kita mulai ke bagian intinya yaitu codingnya ๐
Oya dalam contoh ini, saya kebetulan menggunakan XAMPP yang menggunakan versi PHP 7.4. Sebelum mulai proses coding, terlebih dahulu saya buat folder ‘gdrive‘ di dalam ‘htdocs’ nya XAMPP. Kemudian, saya pindahkan beberapa hal ini ke dalam folder ‘gdrive’ tersebut:
- file ‘oauth-credential.json‘ yang tadi sudah diunduh
- folder ‘vendor‘ dari Google API Client yang tadi sudah diekstrak
- folder ‘src‘ dari Google API Client yang tadi juga sudah diekstrak
Selanjutnya kita mulai mengcoding script upload.php nya. Sebelum mulai coding, terlebih dahulu kita harus memahami mekanisme proses integrasi antara aplikasi yang nanti dibuat dengan Google API. Berikut ini adalah mekanisme yang terjadi:
- Aplikasi pertama kali akan melakukan login menggunakan OAuth melalui sebuah URL tertentu
- Jika login sukses, Google API akan mengirimkan sebuah kode atau token yang nantinya digunakan untuk mengakses layanan Google API.
- Supaya token ini bisa selalu bisa terbaca, sebaiknya kita simpan ke dalam sebuah session.
- Dengan menggunakan token tersebut, proses upload file ke Google Drive nantinya akan dilakukan.
Berdasarkan mekanisme di atas, kita buat script upload.php sebagai berikut.
<?php
session_start();
include 'vendor/autoload.php';
// setting config untuk layanan akses ke google drive
$client = new Google_Client();
$client->setAuthConfig("oauth-credentials.json");
$client->addScope("https://www.googleapis.com/auth/drive");
$service = new Google_Service_Drive($client);
// mengecek keberadaan token session
if (empty($_SESSION['upload_token'])){
// jika token belum ada, maka lakukan login via oauth
$authUrl = $client->createAuthUrl();
header("Location:".$authUrl);
} else {
// jika token sudah ada, maka munculkan form upload file
?>
<h1>Upload to GDrive</h1>
<form method="post" enctype="multipart/form-data" action="upload.php">
Pilih File:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
<?php
// jika form upload disubmit
if (isset($_POST['submit'])){
// menggunakan token untuk mengakses google drive
$client->setAccessToken($_SESSION['upload_token']);
// membaca token respon dari google drive
$client->getAccessToken();
// instansiasi obyek file yg akan diupload ke Google Drive
$file = new Google_Service_Drive_DriveFile();
// set nama file di Google Drive disesuaikan dg nama file aslinya
$file->setName($_FILES["fileToUpload"]["name"]);
// proses upload file ke Google Drive dg multipart
$result = $service->files->create($file, array(
'data' => file_get_contents($_FILES["fileToUpload"]["tmp_name"]),
'mimeType' => 'application/octet-stream',
'uploadType' => 'multipart'));
// menampilkan nama file yang sudah diupload ke google drive
echo $result->name."<br>";
}
}
// proses membaca token pasca login
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
// simpan token ke session
$_SESSION['upload_token'] = $token;
}
?>
OK.. script upload.php sudah jadi. Sehingga di dalam folder ‘gdrive’ berisi beberapa item file dan folder berikut ini:

Sekarang saatnya kita coba menjalankannya. Silakan buka di browser URL http://localhost/gdrive/upload.php.
Untuk pertama kalinya, kemungkinan kita akan diminta untuk login ke akun Google, dan diberikan beberapa konfirmasi authorisasi terhadap layanan Google API nya. Selanjutnya silakan browse sembarang file dari komputer dari form uploadnya. Setelah disubmit, akan Anda dapatkan file tersebut nongol di Google Drive kita, seperti pada tampilan berikut ini.



OK selamat mencoba, dan silakan mengembangkannya sendiri dengan mempelajari fitur-fitur lainnya di Google Drive API Documentation.

28 Comments
septiyo
June 24, 2020 at 1:14 pmMantab Tutorialnya P.Rosihan.
akan saya coba
terima kasih
ekotete
September 4, 2020 at 7:41 amterima kasih tutorialnya pak. pak, skrip di atas apa bisa untuk upload multiple file sekaligus ke google drive ya?
Rosihan Ari Yuana
September 27, 2020 at 9:01 pmMestinya bisa mas.. dicoba saja ya ๐
mumuskh
October 27, 2020 at 11:42 amMohon bantuan solusinya, ketika diklik tida bisa masuk ke menu form upload, tp minta login dg goole pada sudah masuk dan dan juga diklik ijin semua
hanif
October 5, 2021 at 10:45 amSubhaanallaah, bapak ini memang suhu nya… izin mempraktekkan scriptnya ya…
Rosihan Ari Yuana
October 5, 2021 at 3:59 pmSilakan-silakan.. semoga ada manfaatnya.
hanif
October 5, 2021 at 11:09 amMau tanya Pak, file yang telah diupload apa bisa diedit atau diganti ya??
Terimakasih atas pencerahannya…
Rosihan Ari Yuana
October 5, 2021 at 3:59 pmmestinya bisa mas.. krn di google drive ini ada sistem versioning dari file yg diupload. Tp saya blm mempraktikannya ๐
AFFANDY
November 20, 2021 at 5:28 pmKalo mau upload ke folder tertentu di google drive gimana gan?
RARES
January 9, 2022 at 9:28 pmcukup tambahin parent key
$file = new Google_Service_Drive_DriveFile(array(
//Set the Parent Folder
‘parents’ => array(‘YOUR_PARENT_KEY_FOLDER’) // this is the folder id
));
wallsman - ade
March 2, 2022 at 2:28 pmditambahkan dimananya mas RARES?
irfan
January 13, 2022 at 11:41 amsalam mas tutorial nya bisa cuman pas upload access token nya ga ada itu dapatin nya dari mana ya mas?
FIRMAN
January 24, 2022 at 11:03 amassalamualaikum, mas klw di setting masuknya ke akun tertentu bisa ga ?
klw yang ini saya masuk dengan akun google A, filenya masuk ke akun A
saya login masuk menggunakan akun google B, filenya juga masuk ke akun B
kalau di setting semua filenya masuk akun A bisa ga mas ?
syukran , mohon bantuanya
firman
January 25, 2022 at 8:24 amassalamualaikum, mas gmn cara nya agar akun google yg untuk nampung filenya tetap
Zain mat99
January 30, 2022 at 12:56 pmTerimakasih Pak Ari..
Alhamdulillah Sangat bermanfaat. Kebetulan lagi ada pembuatan aplikasi online untuk sekolah
Salam dari Alumni p mat uns 99.
ironman
March 2, 2022 at 2:10 pmTerima kasih Pak ari ilmunya sangat bermanfaat sekali, sy sudah coba dan berhasil, pak ari kalo untuk ambil link dokumennya agar tersimpan di table sehingga dapat ditampilkan di data tables bagaimana ya pak
mohon petunjuknya
terima kasih
ade
March 17, 2022 at 11:29 ammas kalo sy login menggunakan akun gdrive lain trus upload file berhasil ke akun sy masuk filenya,
tapi kalo file di akun gdrive lain itu sy delete datanya kedelete juga ya pak kenapa ya
Syauqie
August 23, 2022 at 5:43 amTerimakasih banyak sharenya Mas, sangat bermanfaat dan pas banget kebutuhannya.
Maaf mau bertanya, saya beberapa kali sukses upload ke GDrive.
Tapi tiba-tiba gagal upload dan muncul pesan error sbb, ini kenapa yah?
Terimakasih banyak sebelumnya.
=============== start ============
Fatal error: Uncaught Google_Service_Exception: { “error”: { “errors”: [ { “domain”: “global”, “reason”: “authError”, “message”: “Invalid Credentials”, “locationType”: “header”, “location”: “Authorization” } ], “code”: 401, “message”: “Invalid Credentials” } } in C:\xampp\htdocs\gdrive\src\Google\Http\REST.php:118 Stack trace: #0 C:\xampp\htdocs\gdrive\src\Google\Http\REST.php(94): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), ‘Google_Service_…’) #1 C:\xampp\htdocs\gdrive\src\Google\Task\Runner.php(176): Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), ‘Google_Service_…’) #2 C:\xampp\htdocs\gdrive\src\Google\Http\REST.php(58): Google_Task_Runner->run() #3 C:\xampp\htdocs\gdrive\src\Google\Client.php(842): Google_Http_REST::execute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), ‘Google_Service_…’, Array, NULL) #4 C:\xampp\htdocs\gdrive\src\Google\Service\Resource.php(232): in C:\xampp\htdocs\gdrive\src\Google\Http\REST.php on line 118
Rosihan Ari Yuana
October 29, 2022 at 9:56 pmCredentials nya invalid mas
tom
October 12, 2022 at 10:58 pmmas variable GET[‘code’] asalnya dari mana? ada ga versi laravelnya?
Rosihan Ari Yuana
October 14, 2022 at 6:42 amparameter code nya didapat dari redirecting setelah proses authentication google mas.. otomatis muncul setelah redirecting..
versi laravelnya gak ada ๐
mumuz
November 3, 2022 at 1:31 pmmohon pencerahannya ada error begini mas
Warning: require(C:\xampp\htdocs\gdrive\vendor\composer/../ralouphie/getallheaders/src/getallheaders.php): failed to open stream: No such file or directory in C:\xampp\htdocs\gdrive\vendor\composer\autoload_real.php on line 55
Fatal error: require(): Failed opening required ‘C:\xampp\htdocs\gdrive\vendor\composer/../ralouphie/getallheaders/src/getallheaders.php’ (include_path=’C:\xampp\php\PEAR’) in C:\xampp\htdocs\gdrive\vendor\composer\autoload_real.php on line 55
Rosihan Ari Yuana
November 28, 2022 at 3:53 pmSepertinya ada file yang not exist di dalam hasil instalasi gdrivenya. Coba diulangi lagi instalasinya.
Dany
January 16, 2023 at 4:27 pmPermisi mas. untuk penggunaan fungsi lain seperti listFiles pada Google API nya cara pemanggilannya seperti apa ya? terimakasih