0

Python で初めての Google App Engine アプリケーションを開発しようとしています。その一環として、ユーザーが動画を Youtube にアップロードし、アプリの他のユーザーと共有できるようにしたいと考えています。推奨されるプロトコルに従って、アップロードは自分の Youtube アカウントに行われ、アプリがキャプチャする必要がある唯一の情報はビデオ ID です。

アップロードのためにユーザーをメインの Youtube サイトにリダイレクトするのではなく、アプリ内からアップロードする機能を本当に望んでいます。これにより、ユーザーはいつでもアプリを離れる必要がなくなり、物事をシームレスに保つことができます。多くのウェブサイトやアプリが提供したい機能であるように見えるので、これは比較的簡単だと思っていましたが、そうではないようです.

OAuth2 フローと格闘したことがないので、ここで通過する必要がある OAuth2 フローを理解するのに本当に苦労しています。Youtube API ドキュメントの唯一のアップロード サンプル コードは、自分のマシンから (コマンド ライン経由で) アップロードするものであるため、ここでは関係ありません。ドキュメントを逆に読んだところ、ブラウザベースのアップロード機能が Youtube Data Api v3 用に更新されたようには思えないため、最初に必要なのは、使用する前にユーザーからアクセス トークンを取得することです。 v2 ブラウザベースのアップロード プロトコル。ユーザーがブラウザーを介してローカル (つまり、自分のマシン) に保存されているファイルをアップロードすることを考えると、Python サーバー側のフローではなく、クライアント側の JavaScript OAuth2 フローが必要であると推測しています。それとも両方必要ですか?

問題は、JavaScript クライアント ライブラリを使用してアプリからサービスを提供している html ページから、ユーザーを承認ページに移動させることさえできないことです。JavaScript クライアント ライブラリ経由でアクセス トークンを取得する手順を理解していることを確認するために、最初のステップとして、Google サンプル コードをここから HTML ページに文字通りカット アンド ペーストしてみました。

Google API Javascript クライアント ライブラリのサンプル

APIキーとクライアントIDを自分のものに変更し、コンソールのAPIアクセスペインでJavaScriptオリジンを更新し、Google+を承認しましたが、ボタンをクリックしても何も起こりません.

したがって、おそらく私はここでかなり基本的なことを誤解しています!

何か案は?Python アプリ内からのフローの制御によって JS フローがオーバーライドされるという問題はありますか? 実際にサーバー側のフローを使用する必要があるという問題はありますか?

私がこれを試した最初の人だとは信じられません。誰かがすでにこれを管理している、または何かアイデアを持っている場合は、どんな指針にも本当に感謝しています. ありがとうございました。

4

1 に答える 1

1

JavaScript で完全にクライアント側を処理しても問題がなく、CORS をサポートするブラウザーに制限しても問題ない場合は、次の 1 つのオプションがあります: http://apiblog.youtube.com/2012/05/unlocking-javascripts -potential-with.htmlこれらの制限に問題がなく、唯一の YouTube API 統合がアップロード用である場合は、おそらくこれを使用します。

Python App Engine アプリケーションにより適した代替オプションは、サーバー側の Web アプリケーション フローを使用することです。ここでの問題は、OAuth 2 を処理するPython クライアント ライブラリ用の Google APIと、ブラウザベースのアップロード フローを処理する古いGData API Python クライアント ライブラリを組み合わせて使用​​する必要があることです。この 2 つを混在させることは間違いなく可能であり、それを行うオープン ソースの Python App Engine アプリケーションについて説明しているブログ記事があります: http://apiblog.youtube.com/2012/08/party-playlist-picker-experimental. html

ご指摘のとおり、現在、v3 にはブラウザベースのアップロード フローはありません。

于 2013-02-19T16:40:33.243 に答える