PHPからVIMEO APIの接続を試してみます。
目次
VIMEO SDK
https://developer.vimeo.com/api/libraries
リファレンスの中を見るとテストができるのでそこで試してみてもいいかも
https://developer.vimeo.com/api/reference
APIでアクセスするためにアプリを作る
https://developer.vimeo.com/apps
※アップロードにはアプリを作った後に申請しないといけなくてこれが5日間程度かかると思ってよい。営業日ベースなら1週間って感じ。長いよ~~。
とりあえず、自分自身の情報を見てみる
<?php require 'vimeo.php/autoload.php'; use Vimeo\Vimeo; $client_id = 'xxxxxxxxxxxxxx'; $client_secret = 'xxxxxxxxxxxxxx'; $access_token = 'xxxxxxxxxxxxxx'; //Vimeoに接続 $lib = new \Vimeo\Vimeo($client_id, $client_secret, $access_token); //自身の情報を取得 $user = $lib->request('/me'); echo '<pre>'; print_r($user); echo '</pre>'; ?>
って実行したらエラー「 syntax error, unexpected ‘?’ in /vimeo.php/src/Vimeo/Vimeo.php on line 163」およよ??
163行目の?stringは、PHP7.1以上で有効だったよ。?をとってみたらOK。まあ、PHP7.0でテストするのもどうなのかと思って、PHP7.1に変更してみた。
public function getToken(): ?string ↓ public function getToken(): string
とりあえず戻り値の最初は
Array ( [body] => Array ( [uri] => /users/xxxxxx [name] => xxxxxx [link] => https://vimeo.com/userxxxxxxxxx [location] => [bio] => [short_bio] => [created_time] => 2020-02-26T09:50:36+00:00
ってなところ。
自分自身のアカウント情報:$lib->request(‘/me’);
自分自身のビデオリストを取得:$lib->request(‘/me/videos’)
ってできる。
アップロードできるのかな?
APIのページを参考に…https://developer.vimeo.com/api/guides/videos/upload
APIをインストール。これでやらないと、必要なものを自分で集めるのが大変!!
composer require vimeo/vimeo-api
あとは、APIドキュメントページを参考に記述すればアップロードまで完了!!
以外とここまでは簡単だった。
操作として
1.アップロード
2.設定の変更
となるようだ。
プライバシー設定メモ
・VIMEO.COMで非公開
$client->request($uri, array( 'privacy' => array( 'view' => 'disable', ), ), 'PATCH');
コメント禁止
'comments'=>'nobody',
どこの動画に埋め込みを許可しますか?の設定メモ
リファレンスによると
$client->request($uri . '/privacy/domains/example.com', 'PUT'); $client->request($uri, array( 'privacy' => array( 'embed' => 'whitelist' ) ), 'PATCH'); echo $uri . ' will only be embeddable on "http://example.com".';
って感じです。
PUTでドメインを追加して、この動画は、特定のドメインからだけだよ==って感じ。
えーと、このあたりは「https://developer.vimeo.com/api/reference/videos#embed-privacy」も参考にしておく必要がある。
で、ドキュメント通りに行っても動かん!!ってはまりました。
まず、1行目のドメインを追加する箇所を実行したときにレスポンスが「[status] => 405」」だと。ちなみに[Allow] => PUT,DELETE,OPTIONSって言われています。なのでPUTできていない。
APIのコードを読む限り、requestのパラメーターって3番目がMETHODの指定。おろ?ドキュメントは2番目。
request($url, $params = array(), $method = 'GET', $json_body = true, array $headers = array()): array
じゃあ、2番目のパラメーターをarray()で処理してみた。
$client->request($uri . '/privacy/domains/example.com', array(),'PUT');
こんどは、[status] => 400 で戻ってきたぁ。
で、今度はエラーメッセージあり。[error] => The video\’s embed privacy isn’t set to specific domains.
whiteリスト対応になってないっぽい。それなので、順番を動画をwhitelistに対応にしてからドメインを追加してみた。
そしたら[status] => 200 でwhitelistに追加できた。めでたしめでたし。
プレイヤーを試してみる
特定のドメインだけをしている場合にWordPressの管理画面で動画を見ようとすると…
「大変申し訳ございません」って見れない…
VIMEO HELPを見ると
設定にドメインがリストされているにも関わらずエラーが引き続き表示される場合は、アドレスバーで指定されているドメインがVimeoプレーヤーに送信されたドメインと異なる場合があり、この場合プライバシーに関するエラーが表示されます。 リファラーがプレーヤーのiframeに到達できないよう、サイトのHTMLコードがブロックしている可能性がないかウェブデベロッパにお問い合わせください。
えーと、iframeを読み込むときにリファラーを送っていないんだと。。
では実際に…
・再生可能な場合
・再生不可能な場合
リファラーがいません。WordPressさん。。。
ということでmetaでリファラーすればきっと表示。
プレイヤー回りのカスタマイズ
「動画」>「プリセットを埋め込む」で新規作る。
PlayerのAPIで埋め込み指定するよりもこっちで指定したほうが良い。ロゴ削除や変更も可能だし