PHPからvimeo APIを使う:自サーバ経由しないアップロード

vimeoを利用したいとのお客さまからのご要望があり、テスト的に使ってみた。
Vimeo(ヴィメオ、クリエイター向け動画共有サイト)

PHPからvimeo APIを使う。
vimeoのIDを取り、APP作成の準備をし、
予めアップロードした動画をPHPプログラムから一覧取得・表示はごくごく簡単にできた。
PHPからvimeo APIを使う(情報取得、変更、アップロード)

この調子でアップロードも・・・と思ったところで壁があった。

自サーバにある動画を、URL指定でアップロードすることは簡単なようだ。
「自サーバ経由しないアップロード」・・ごく普通の、ファイルを指定して「Upload」で送信する方法の情報があまりなく、
それでもサンプルを見つけた。

vimeo direct upload form

参考にして動かすと

 Unable to initiate an upload. [Your access token does not have the "upload" scope]

でエラーになる。
uploadの権限がないっぽい。。

アップロードアクセスを有効にする

「Enable upload access」の項・・・申請する必要があった。
https://developer.vimeo.com/api/guides/videos/upload

アップロードアクセスを有効にする
まず最初に、アプリがVimeoに動画をアップロードできるようにするには、アップロードアクセスをオンにする必要があります。この機能はデフォルトでは有効になっていません。

ということで、課金するか?どんな動画か?対象は自分のアカウントのみか? 等の質問に答えて申請した。
返信は最大5営業日とのことだったが、半日ほどで処理され、OKメールが来た。

トークンの作り直し

再度、実行。だが、メッセージは変わらずエラーのまま。
調べたりコード変更したり設定確認したり小一時間。
「vimeoのアプリケーション設定画面で、upload権限つけたトークンを再作成する」が正解だった。
・・・公式ドキュメントのどこかに載っているのか??PGの勘で設定見つけたが・・・

新しいトークンに入れ替え。
さらにUploadに必要なモジュールをcomposerで追加した。

composer require ankitpokhrel/tus-php
composer require guzzlehttp/guzzle

しかし。

Unable to initiate an upload. 
[You’ve hit your maximum number of uploads for today.
 Go to https://vimeo.com/upgrade to get more.]

と怒られました。
中途半端にできたデータが10件。vimeoページから削除すると、動かせるようになりました。
その日のupload回数でなく、動画数のようです。
無料のBasicプランの制限であって、適正な有料プランなら問題はなさそうです。

カテゴリー: php