PHPackages                             koyabu/dropboxapi - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. koyabu/dropboxapi

ActiveLibrary

koyabu/dropboxapi
=================

Dropbox API

081PHP

Since Dec 29Pushed 4mo agoCompare

[ Source](https://github.com/stievenk/DropboxAPIClient)[ Packagist](https://packagist.org/packages/koyabu/dropboxapi)[ RSS](/packages/koyabu-dropboxapi/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (1)

DropboxClient PHP Library
=========================

[](#dropboxclient-php-library)

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
-----------

[](#-instalasi)

Setelah library ini dipublish di GitHub dan Packagist, instalasi dapat dilakukan melalui composer:

`composer require koyabu/dropboxapi`

---

🔧 Konfigurasi Dropbox App
-------------------------

[](#-konfigurasi-dropbox-app)

1. Buka
2. Buat aplikasi baru
3. Aktifkan Permission yang diperlukan
4. Atur Redirect URI, contoh: ```
    https://example.com/dropbox/callback

    ```
5. Catat **App Key** dan **App Secret**

---

🚀 Cara Menggunakan
------------------

[](#-cara-menggunakan)

### 1. Inisialisasi Class

[](#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
--------------------------------

[](#-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
----------------------------------------

[](#-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)
--------------------------

[](#-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
================

[](#-membuat-folder)

```
$result = $dropbox->createFolder('/backup/project/');

if (!$result) {
    echo $dropbox->getLastError();
}
```

---

📤 Upload File Kecil (&lt; 150 MB)
=================================

[](#-upload-file-kecil--150-mb)

```
$dropbox->uploadFile(
    __DIR__ . '/local/file.zip',
    '/backup/file.zip'
);
```

---

📤 Upload File Besar (&gt; 150 MB)
=================================

[](#-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)
==================================================

[](#-struktur-direktori-disarankan-untuk-publishing)

```
/your-library
│── src/
│   └── Dropbox.php
│── composer.json
│── README.md
│── LICENSE

```

---

📝 Catatan Penting
=================

[](#-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
============

[](#-kontribusi)

Pull request, bug report, dan perbaikan sangat diterima.

---

📄 Lisensi
=========

[](#-lisensi)

MIT License atau sesuai kebutuhan Anda.

---

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance51

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/09b7ee9510aae1fe1a8aea5c2f2c39683d3c3f20d389420e6f862b322aed8eee?d=identicon)[stievenk](/maintainers/stievenk)

---

Top Contributors

[![stievenk](https://avatars.githubusercontent.com/u/486428?v=4)](https://github.com/stievenk "stievenk (3 commits)")

### Embed Badge

![Health badge](/badges/koyabu-dropboxapi/health.svg)

```
[![Health](https://phpackages.com/badges/koyabu-dropboxapi/health.svg)](https://phpackages.com/packages/koyabu-dropboxapi)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
