はじめに
クライアント資格情報の取得は、アクセストークンを取得するための1回限りの前提条件であり、BrightcoveAPIの大部分がリクエストの認証に使用します。
クライアント資格情報の詳細については、を参照してください。 BrightcoveOAuthサービスの仕組み。
このサンプルは、Webアプリからクライアント資格情報を取得する方法を示しています。OAuth APIはCORSに対応しておらず、サーバー側からリクエストを行う必要があるため、アプリは必要な情報をプロキシに送信します。プロキシはAPIリクエストを作成し、応答をクライアントに送り返します。ここでのプロキシはPHPで記述されていますが、サーバー側のどの言語でもかまいません。インターネット経由でアプリにPOSTリクエストを送信できる必要があります。
BC_TOKENを入手する
取得するにはclient_id
そしてclient_secret
OAuth APIを介して、BC_TOKEN
リクエストを認証します。Studioにログインすると、BC_TOKENがCookieとして設定されます。そのCookieは好きな方法で取得できますが、簡単にするために、次のJavaScriptスニペットを作成しました。Studioにログインしたときに開発者コンソールに貼り付けることができます。戻る、およびBC_TOKENを含むプロンプトが表示されます。
資格情報アプリを取得する
ソースコード
このサンプルに関連付けられているすべてのコードを、この GitHub リポジトリで検索します。
サンプルアプリ
ペンを見るOAuth APIサンプル:クライアント資格情報を作成する Brightcove Learning Services( @ rcrooks1969) オンCodePen。
CodePen を使用する
上記のCodePenを効果的に使用するためのヒントは次のとおりです。
- [ 結果 ] ボタンをクリックして、プレーヤーの実際の表示を切り替えます。
- HTML/CSS/JS ボタンをクリックして、コードタイプの 1 つを表示します。
- 右上隅にある CodePen の編集をクリックして、この CodePen を自分のアカウントにフォークします。
- このサンプルに関連付けられているすべてのコードを、この GitHub リポジトリで検索します。
プロキシコード
このページのサンプルアプリを独自のバージョンで作成するには、独自のプロキシを作成してホストする必要があります。クライアント資格情報を作成するためのOAuthAPIメソッドの認証は、一般的なAPI認証の認証とは異なるため、このプロキシは、ほとんどのサンプルアプリで使用されているプロキシとは多少異なります。ここで使用されるプロキシの完全なコードを以下に示します。
<?php
/**
* client-credentials-proxy.php-Brightcove RESTfulAPIのプロキシ
*クライアントIDとクライアントシークレットを取得し、応答全体を返します
* アクセス:
*(HTTPS経由でプロキシにアクセスする必要があることに注意してください)
* 方法:役職
*
* @post {string} bc_token-資格情報が要求されるすべてのアカウントの管理者権限を持つBC_TOKEN
* @post {JSONstring} requestBody-JSON文字列としての完全なリクエスト本文
*
* @returns {文字列} $response-OAuth APIから受け取ったJSONレスポンス
*/
//セキュリティチェック
if(strpos($ _ SERVER ['HTTP_REFERER']、 'solutions.brightcove.com')== false && strpos($ _ SERVER ['HTTP_REFERER']、 'ondemand.brightcovelearning.com')== false && strpos($ _ SERVER ['HTTP_REFERER']、 'video.brightcovelearning.com')== false && strpos($ _ SERVER ['HTTP_REFERER']、 's.codepen.io')== false && strpos($ _ SERVER ['HTTP_REFERER']、 'fiddle.jshell.net')== false && strpos($ _ SERVER ['HTTP_REFERER']、 'players.brightcove.net')== false && strpos($ _ SERVER ['HTTP_REFERER']、 'support.brightcove.com ')== false && strpos($ _ SERVER [' HTTP_REFERER ']、' master-7rqtwti-6sglloa4yrkti.us.platform.sh ')== false){
exit( '{"ERROR": "http://docs.brightcove.comまたはhttp:solutions.brightcove.comからのリクエストのみがこのプロキシによって受け入れられます"}');
}
//CORS イネーブルメントとその他のヘッダー
ヘッダー (「アクセス制御許可オリジン:*」);
ヘッダー (「コンテンツタイプ:アプリケーション/JSON」);
ヘッダー (「X-コンテンツタイプオプション:nosniff」);
ヘッダー(「X-XSS-保護」);
//データを取得するか死ぬ
($_POST ["requestBody"]) {
$data = json_decode($_POST["requestBody"]);
} else {
exit( "リクエスト本文がありません");
}
//リクエストタイプを取得するか、デフォルトでPOSTに設定します
($_POST ["requestType"]) {
$method = $_POST["requestType"];
} else {
$ method = 'POST';
}
// bc_tokenを取得するか死ぬ
if($ _POST ["bc_token"]){
$ bc_token = $ _POST ["bc_token"];
} else {
exit( "bc_tokenがありません");
}
$ request = "https://oauth.brightcove.com/v4/client_credentials";
$ ch = curl_init($ request);
curl_setopt_array ($ch, 配列 (
CURLOPT_CUSTOMREQUEST = > $メソッド、
CURLOPT_RETURNTRANSFER = > 真、
CURLOPT_SSL_VERIFYPEER = > 偽、
CURLOPT_HTTPHEADER = > 配列 (
'コンテンツタイプ:アプリケーション/JSON ',
「認証:BC_TOKEN {$ bc_token} "
)、
>CURLOPT_POSTFIELDS = json_encode ($データ)
)));
$response = curl_exec($ch);
curl_close ($ch);
//エラーをチェックする
($応答=== 偽) {
死ぬ (curl_error ($ch));
exit( 'リクエストの作成中にエラーが発生しました');
} else {
エコー$レスポンス;
}
?>