サービス内にYouTubeのアップロードの機能を作るまで① 〜ザックリ〜

詳しくは、リポジトリまとめてqiitaに投稿かな?と思っているのでコッチはザックリ

 

github.com

取り敢えず↑には乗せ済み。(なお、リポジトリがでかいからノイズが大きくて参考にならん模様)

 

ってことで、YouTubeアップロードまでに開発した部分

サーバー編の概要

①. Googleのアカウントを用意する

②.Google API ConsoleYouTube Data API」を有効

③.認証情報「OAuth 2.0 クライアント ID」作成

※ここが意外とハマりポイント

・数値のみドメインは「承認済みのリダイレクト URI」に登録できないので、vagrantから立てた場合は、「http://192.168.33.10.xip.io:8080/」みたいにする。

※「.xip.io」は、IPをドメインに変換してくれるドメインサービスなのでローカルでもアクセスできる

 

④.対象GoogleアカウントでYouTubeのマイチャンネルを作成

⑤.15分以上の動画投稿をできる用に、アカウント認証

15 分を超える動画のアップロード - YouTube ヘルプ

 

〜ここまでで、準備完了〜

・以降、サーバー開発

 

⑥.以下の流れでアクセス出来るように構築

  1. Googleアカウント認証する
  2. 認証後のcallbackについてくるパラメータを確保する
  3. 動画アップロードのAPIに上記のパラメータを使い認証して実行

動画アップロードのサンプルは、公式であるので、ここから(バッチ処理ですが動くソースが一番参考になる)

google-api-go-client/youtube.go at master · google/google-api-go-client · GitHub

 

⑦.↑のアップロードにレスポンスにvideo_idが返却されるので、それをDBに格納して投稿と紐付ける

 

番外編. Googleアカウント認証のアクセストークンは期限が30分みたいなので、認証は毎回やらせる感じにしています。

 

これで完成。

ハードル高すぎですね。

さらに、実装時は↑の他にも動画のエンコード、フォーマット形式でアップロードできないとかハマりまくった。(あと、フロントのデザインも・・・)

 

唯一の救いはYouTubeのアップロードAPIのレスポンが結講早いことですかね。おかげ、API直書きでレスポンス返してもタイムアウトしないで済む。

 

時間ができたらwebからアップロードの仕組みだけ切り出したレポジトリ作ってqiitaの記事にする予定。

流石に、このムズさは誰かかが、動くソースを公開していないとキツイっすな