建立用戶端認證

此範例可讓您為一或多個帳戶建立用戶端認證,並將您選擇的 API 權限指派給他們。

簡介

獲得客戶端憑證是獲得訪問令牌的一次性先決條件,大多數Brightcove API都使用該令牌來認證請求。

有關客戶端憑據的完整說明,請參閱Brightcove OAuth 服務的工作原理 .

此示例向您展示如何從Web應用程序獲取客戶端憑據。由於OAuth API未啟用CORS,並且必須從服務器端發出請求,因此該應用會將必要的信息發送到代理,然後由代理髮出api請求並將響應發送回客戶端。這裡的代理是用 PHP 編寫的,但任何服務器端語言都可以-您只需要能夠通過互聯網向應用程序發送 POST 請求。

獲取您的 BC_TOKEN

得到一個client_idclient_secret通過 OAuth API,您將需要一個BC_TOKEN驗證您的請求。登錄Studio時,您的BC_TOKEN被設置為cookie。您可以通過任何您喜歡的方式獲取該 cookie,但為了方便起見,我們創建了以下 JavaScript 代碼段 - 您可以在登錄 Studio 時將其粘貼到開發人員控制台中,按返回 , 並且將出現包含 BC_TOKEN 的提示:

獲取憑證應用

原始碼

在此找到與此示例相關的所有代碼GitHub 倉庫 .

範例應用程式

看筆OAuth API 示例:創建客戶端憑證通過 Brightcove 學習服務( @rcrooks1969) 在代碼筆 .

使用編碼器

以下是一些有效使用上述 CodePen 的提示:

  • 按一下「結果」按鈕,切換播放器的實際顯示。
  • 點擊HTML/CSS/JS按鈕顯示其中一種代碼類型。
  • 點擊在 CodePen 上編輯在右上角將此 CodePen 分叉到您自己的帳戶中。
  • 在此找到與此示例相關的所有代碼GitHub 倉庫 .

代理代理代碼

為了建立您自己的版本此頁面上的範例應用程式,您必須建立並裝載您自己的 Proxy。此代理與大多數示例應用程序中使用的代理有所不同,因為用於創建客戶端憑據的OAuth API方法的身份驗證與常規API身份驗證的身份驗證不同。下面顯示了此處使用的代理的完整代碼。

        <?php
        /**
         * client-credentials-proxy.php-Brightcove RESTful API的代理
         *獲取客戶ID和客戶機密,並返回整個響應
         * 存取:
         *(請注意,您應該 * 總是 * 通過 HTTPS 訪問代理)
         * 方法:開機自檢
         *
         * @post {string} bc_token-BC_TOKEN,對所有要求提供憑據的帳戶具有管理員權限
         * @post {JSONstring} requestBody-完整的請求主體,為JSON字符串
         *
         * @returns {字符串} $ 響應-從 OAuth API 接收到的 JSON 響應
         */
        
        //安全檢查
        如果(strpos($ _ SERVER ['HTTP_REFERER'],'solutions.brightcove.com')==否&& strpos($ _ SERVER ['HTTP_REFERER'],'ondemand.brightcovelearning.com')==否&& strpos($ _ SERVER ['HTTP_REFERER'],'video.brightcovelearning.com')==否&& strpos($ _ SERVER ['HTTP_REFERER'],'s.codepen.io')==否&& strpos($ _ SERVER ['HTTP_REFERER'], 'fiddle.jshell.net')==否&& strpos($ _ SERVER ['HTTP_REFERER'],'players.brightcove.net')==否&& strpos($ _ SERVER ['HTTP_REFERER'],'support.brightcove.com ')==否&& strpos($ _ SERVER ['HTTP_REFERER'],'master-7rqtwti-6sglloa4yrkti.us.platform.sh')==否){
            exit('{"ERROR":"此代理僅接受來自 https://docs.brightcove.com 或 https:solutions.brightcove.com 的請求"}');
        }
        
        //CORS 啟用和其他標題
        header(“ Access-Control-Allow-Origin:*”);
        頭(「內容類型:應用程序 /json」);
        頭(「X 內容類型-選項:nosniff」);
        標頭(「XXSS-保護」);
        
        //獲取數據或死亡
        如果($ _POST [“ requestBody”]){
            $ 數據 = 解碼($ _POST ["請求主體"]);
        }其他{
          exit(“請求正文丟失”);
        }
        //獲取請求類型或默認為POST
        如果($ _POST [“ requestType”]){
            $ 方法 = $_POST ["請求類型"];
        }其他{
          $ method ='POST';
        }
        //獲取bc_token或死亡
        如果($ _POST [“ bc_token”]){
            $ bc_token = $ _POST [“ bc_token”];
        }其他{
          exit(“ bc_token missing”);
        }
        
        $ request =“ https://oauth.brightcove.com/v4/client_credentials”;
        $ ch = curl_init($ request);
        curl_setopt_array($ ch,array(
            CURLOPT_CUSTOMREQUEST => $方法,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_SSL_VERIFYPEER =>否,
            CURLOPT_HTTPHEADER =>數組(
                '內容類型:應用程序/json',
                「授權:BC_TOKEN {$ bc_token}”
            )、
            CURLOPT_POSTFIELDS => json_encode($ data)
        );
        $ 響應 = 捲曲($ 查詢);
        curl_close($ ch);
        
        //檢查錯誤
        if($ response === FALSE){
            die(curl_error($ ch));
            exit('發出請求時發生錯誤');
        }其他{
          echo $ response;
        }
        
        ?>