koyabu / dropboxapi
Dropbox API
Installs: 5
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/koyabu/dropboxapi
Requires
- guzzlehttp/guzzle: ^7.5
This package is auto-updated.
Last update: 2025-11-27 07:07:42 UTC
README
Library PHP sederhana untuk berinteraksi dengan Dropbox API v2, mendukung:
- OAuth2 Authorization Code Flow
- Refresh Access Token otomatis
- Membuat folder
- Upload file kecil (upload langsung)
- Upload file besar (chunked / session upload)
- Penanganan error terpusat
Note: Library ini dikembangkan berdasarkan logika Dropbox API v1 oleh Stieven Kalengkian kemudian di optimize dengan bantuan AI khususnya untuk upload file besar dan penanganan error.
📦 Instalasi
Setelah library ini dipublish di GitHub dan Packagist, instalasi dapat dilakukan melalui composer:
composer require koyabu/dropboxapi
🔧 Konfigurasi Dropbox App
- Buka https://www.dropbox.com/developers/apps
- Buat aplikasi baru
- Aktifkan Permission yang diperlukan
- Atur Redirect URI, contoh:
https://example.com/dropbox/callback - Catat App Key dan App Secret
🚀 Cara Menggunakan
1. Inisialisasi Class
use Koyabu\Dropbox; $dropbox = new Dropbox([ 'client_id' => 'APP_KEY_ANDA', 'client_secret' => 'APP_SECRET_ANDA', 'redirect_uri' => 'https://example.com/dropbox/callback', 'scope' => 'files.content.write files.content.read', ]);
🔐 Mendapatkan Authorization Code
Untuk pertama kali, panggil:
echo $dropbox->getAuthUrl();
Ini akan menampilkan URL Authorize Dropbox. User akan login dan mendapatkan authorization code.
🔑 Tukar Authorization Code menjadi Token
$response = $dropbox->getAccessToken($_GET['code']); // Simpan token ke database atau file $token = json_decode($response, true);
Token yang didapat berupa:
{
"access_token": "...",
"refresh_token": "...",
"expires_in": 14400
}
🔁 Refresh Token (Otomatis)
Library secara otomatis akan melakukan refresh token jika token sudah expired.
Pastikan Anda sudah menyimpan:
- access token
- refresh token
Lalu assign:
$dropbox = new Dropbox([ 'app_key' => 'APP_KEY_ANDA', 'app_secret' => 'APP_SECRET_ANDA', 'refresh_token' => 'refresh_token_dari_auth', 'auto_refresh' => true ]);
📁 Membuat Folder
$result = $dropbox->createFolder('/backup/project/'); if (!$result) { echo $dropbox->getLastError(); }
📤 Upload File Kecil (< 150 MB)
$dropbox->uploadFile( __DIR__ . '/local/file.zip', '/backup/file.zip' );
📤 Upload File Besar (> 150 MB)
Upload dibagi chunk 4 MB (bisa diubah):
$dropbox->uploadLargeFile( __DIR__ . '/video.mp4', '/backup/video.mp4' );
Jika berhasil, akan mengembalikan metadata file.
Jika gagal, false → cek error dengan:
echo $dropbox->getLastError();
📘 Struktur Direktori (Disarankan untuk Publishing)
/your-library
│── src/
│ └── Dropbox.php
│── composer.json
│── README.md
│── LICENSE
📝 Catatan Penting
- Pastikan timezone dan server clock sinkron untuk menghindari error token.
- Refresh token harus disimpan secara permanen (database/file).
- Access token sebaiknya disimpan sementara, akan berubah setelah refresh.
- Untuk file besar, library sudah mendukung retry sederhana.
🤝 Kontribusi
Pull request, bug report, dan perbaikan sangat diterima.
📄 Lisensi
MIT License atau sesuai kebutuhan Anda.