簡介
獲得客戶端憑證是獲得訪問令牌的一次性先決條件,大多數Brightcove API都使用該令牌來認證請求。
有關客戶端憑據的完整說明,請參閱Brightcove OAuth 服務的工作原理 .
此示例向您展示如何從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 學習服務( @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;
}
?>