サポート サポート問い合わせ先 | システムステータス システムステータス

クライアント資格情報を作成する

このサンプルでは、​​1つ以上のアカウントのクライアント認証情報を作成し、選択したAPI権限を割り当てます。

概要

クライアント資格情報を取得することは、アクセストークンを取得するためのXNUMX回限りの前提条件です。これは、Brightcove APIの大半がリクエストの認証に使用します。

クライアントの資格情報の詳細については、 Brightcove OAuthサービスの仕組み.

このサンプルは、Webアプリケーションからクライアントの資格情報を取得する方法を示しています。 なぜなら OAuth API CORS対応ではなく、サーバー側からのリクエストが必要な場合、アプリは必要な情報をプロキシに送信し、プロキシはそのリクエストを作成してクライアントに返します。 ここのプロキシはPHPで書かれていますが、サーバーサイドの言語であればどんなものでも構いません。インターネット経由でアプリにPOSTリクエストを送るだけでよいのです。

BC_TOKENを取得する

取得するには client_idclient_secret ビア OAuth API、あなたは BC_TOKEN あなたの要求を認証する。 Studioにログインすると、BC_TOKENがクッキーとして設定されます。 このクッキーは好きな方法で入手できますが、簡単にするために、次のJavaScriptスニペットを作成しました。スタジオにログインしたときに開発者コンソールに貼り付けることができます。 リターンBC_TOKENを含むプロンプトが表示されます。

証明書アプリを入手する

このサンプルに関連付けられているすべてのコードをこれで見つけます GitHubリポジトリ.

ペンを見る OAuth API サンプル:クライアント資格の作成 ブライトコーブラーニングサービス(@rcrooks1969)上 コードペン.

CodePenの使用

上記のCodePenを効果的に使用するためのヒントをいくつか紹介します。

  • プレーヤーの実際の表示を切り替えるには、 Result ボタン。
  • ストリーミングを停止する場合は上部の HTML / CSS / JS ボタンを押して、1つのコードタイプを表示します。
  • ナビゲーションヘッダーの CodePenで編集 右上隅にあるこのCodePenを自分のアカウントにフォークします。
  • このサンプルに関連付けられているすべてのコードをこれで見つけます GitHubリポジトリ.

プロキシコード

このページに独自のバージョンのサンプルアプリケーションを構築するには、独自のプロキシを作成してホストする必要があります。 このプロキシは、ほとんどのサンプルアプリケーションで使用されているプロキシとは多少異なります。 OAuth API クライアントの資格情報を作成する方法は、一般的なAPI認証の方法とは異なります。 ここで使用されるプロキシの完全なコードを以下に示します。

        <?php
        /**
         * client-credentials-proxy.php - proxy for Brightcove RESTful APIs
         * gets a client id and client secret and returns the whole response
         * Accessing:
         *         (note you should *always* access the proxy via HTTPS)
         *     Method: POST
         *
         * @post {string} bc_token - BC_TOKEN with admin permissions on all accounts that credentials are requested for
         * @post {JSONstring} requestBody - the full request body as a JSON string
         *
         * @returns {string} $response - JSON response received from the OAuth API
         */
        
        // security checks
        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":"Only requests from http://docs.brightcove.com or http:solutions.brightcove.com are accepted by this proxy"}');
        }
        
        // CORS enablement and other headers
        header("Access-Control-Allow-Origin: *");
        header("Content-type: application/json");
        header("X-Content-Type-Options: nosniff");
        header("X-XSS-Protection");
        
        // get data or die
        if ($_POST["requestBody"]) {
            $data = json_decode($_POST["requestBody"]);
        } else {
          exit("request body missing");
        }
        // get request type or default to POST
        if ($_POST["requestType"]) {
            $method = $_POST["requestType"];
        } else {
          $method = 'POST';
        }
        // get bc_token or die
        if ($_POST["bc_token"]) {
            $bc_token = $_POST["bc_token"];
        } else {
          exit("bc_token missing");
        }
        
        $request  = "https://oauth.brightcove.com/v4/client_credentials";
        $ch       = curl_init($request);
        curl_setopt_array($ch, array(
            CURLOPT_CUSTOMREQUEST  => $method,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_SSL_VERIFYPEER => FALSE,
            CURLOPT_HTTPHEADER     => array(
                'Content-type: application/json',
                "Authorization: BC_TOKEN {$bc_token}"
            ),
            CURLOPT_POSTFIELDS => json_encode($data)
        ));
        $response = curl_exec($ch);
        curl_close($ch);
        
        // Check for errors
        if ($response === FALSE) {
            die(curl_error($ch));
            exit('An error occurred on making the request');
        } else {
          echo $response;
        }
        
        ?>
        

ページの最終更新日:12年2020月XNUMX日