Lumenと組み合わせてDropboxのAPIを使用する案件があり、
その際に調べたことのメモです。
逐次追加予定。
SDK
Dropbox API v2には、公式のPHP SDKは無い。
公式で紹介されている有志によるPHP SDKの一つがdropbox-php-sdk。
composerで追加
composer require kunalvarma05/dropbox-php-sdk
Controllerへの読込と初期化
<?php namespace App\Http\Controllers; use Laravel\Lumen\Routing\Controller as BaseController; use Kunnu\Dropbox\Dropbox; use Kunnu\Dropbox\DropboxApp; use Kunnu\Dropbox\DropboxFile; use Kunnu\Dropbox\Exception; class IndexController extends BaseController { private $accessToken = /* DropboxのDevelopersで取得したアプリアクセストークン */; private $key = /* DropboxのDevelopersで取得したアプリキー */; private $secret = /* DropboxのDevelopersで取得したパスワード(App secret) */; private $dropbox; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->makeClient(); } public function makeClient() { $app = new DropboxApp($this->key, $this->secret, $this->accessToken); $this->dropbox = new Dropbox($app); }
Webhook
ファイルアップロード
// DropboxFileオブジェクトを生成 $uploadFile = new DropboxFile(/*アップロードしたいローカルファイルのパス*/); // Dropboxへのアップロード。ファイルのメタデータが返る $file = $this->dropbox->upload($dropboxFile, /*Dropbox上のアップロード先フォルダ/ファイル名*/, [/*パラメータ*/]);
実際のDropboxAPIv2において叩いているエンドポイントは/files/upload。
また、パラメータは以下の内容を配列で設定。
・mode:
add(default)…別名で保存
overwrite…強制上書き
update…指定したrevと一致した場合は上書き、それ以外は別名保存
同名ファイルが存在する場合の上書き設定。
通常は[“mode” => “add”]のように記述するが、updateの場合のみ[“mode” => [“update” => “rev文字列“]]となる。
・autorename:true / false(default)
同名ファイルが存在した場合、別名ファイルを作成するかどうかの設定。modeと関連する。
・client_modified:タイムスタンプ(format=”%Y-%m-%dT%H:%M:%SZ”)、オプション
ファイルアップロード時の時間をこちらで指定したい場合に設定。
・mute:true / false(default)
共有ユーザに更新通知を送信しないようにするかの設定。
・property_groups:オプション
ファイルに追加するカスタムプロパティのリスト。詳細は割愛。
・strict_conflict:true / false(default)
同名ファイルが存在する場合の挙動を細かく設定する場合のフラグ。詳細は割愛。