概述
Brightcove的實現包括兩個部分:
-
OAuth API -提供對所有可用OAuth功能的訪問
-
OAuth憑據界面-可通過Studio中的“帳戶設置”界面訪問,該界面提供了一種簡單的方法來註冊將使用Brightcove API的應用程序,並為其生成客戶端ID和客戶端密鑰。 看到 管理API身份驗證憑據 有關使用OAuth UI的說明。
另見 API參考.
專業術語
- OAuth的
-
開放的授權標準。 OAuth代表資源所有者為客戶端應用程序提供對服務器資源的“安全委派訪問”。 OAuth本質上允許授權服務器在資源所有者的批准下將訪問令牌發布給第三方客戶端。 然後,客戶端使用訪問令牌訪問資源服務器託管的受保護資源
- 範圍
-
描述一組資源(可通過API訪問)和對這些資源的某些操作(例如“讀取”和“寫入”)的數據對象。 訪問令牌的範圍限制了您可以通過顯示該令牌來做什麼。
- 客戶
-
最終用戶用於通過Brightcove API訪問資源的應用。
- 客戶編號
-
OAuth服務生成的客戶端的唯一標識符。
- 秘密客戶
-
與客戶端ID一起使用的一串比特,用作驗證客戶端的密碼。
- 訪問令牌
-
字符串,提供對API的臨時訪問。 OToken服務會根據請求為客戶端返回訪問令牌。
- 流
-
操作序列,導致成功訪問受OAuth保護的資源。
基本網址
的基本網址 OAuth API 是:
https://oauth.brightcove.com/v4
客戶憑證流
在客戶端憑據流程中,您的應用將發出訪問令牌請求,並將您的客戶端ID和客戶端機密隨請求傳遞給OAuth服務。 當前,這是Brightcove客戶唯一支持的流程。
客戶端憑據流的確切工作方式將取決於方案。
組織應用
在這種情況下,您有一個應用程序需要與一個或多個Brightcove API進行交互,僅適用於屬於您組織的一個或多個帳戶。 該應用未綁定到任何特定用戶。 在這種情況下,工作流程如下所示:

要實現此方案,您需要執行以下操作:
-
使用OAuth用戶界面或OAuth服務,獲取您的應用的客戶端ID和密碼-用戶界面可讓您獲取單個或多個帳戶的客戶端ID和密碼。 這是一次性操作。
-
向您的服務器端應用添加邏輯以向 OAuth API 用於訪問令牌。 實施將取決於您的應用程序的語言(建議您使用現有的語言 OAuth2庫 如果可能的話,請選擇您的語言),但您撥打的電話將是POST請求,以:
https://oauth.brightcove.com/v4/access_token
client_id
以及client_secret
作為傳遞username:password
在基本的Authorization標頭中:Authorization: Basic {client_id}:{client_secret}
整個
{client_id}:{client_secret}
字符串必須經過Base64編碼(例如,在Node.js中,您可以使用Buffer.toString("base64")
方法)。 CURL自動執行BASE64編碼,因此您只需將憑據傳遞為user {client_id}:{client_secret}
。 您還需要添加一個Content-Type: application/x-www-form-urlencoded
頭。請求主體將包含鍵/值對
grant_type=client_credentials
。 請注意,由於Content-type
isx-www-form-urlencoded
,您也可以將其作為參數附加到請求網址:https://oauth.brightcove.com/v4/access_token?grant_type=client_credentials
以下是一個非常基本的Node.js應用,它將獲得
access_token
給予有效client_id
以及client_secret
./* * Simple node app to get an access_token for a Brightcove API * You will need to substitute valid client_id and client_secret values * for {your_client_id} and {your_client_secret} */ var request = require('request'); var client_id = "{your_client_id}"; var client_secret = "{your_client_secret}"; var auth_string = new Buffer(client_id + ":" + client_secret).toString('base64'); console.log(auth_string); request({ method: 'POST', url: 'https://oauth.brightcove.com/v4/access_token', headers: { 'Authorization': 'Basic ' + auth_string, 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'grant_type=client_credentials' }, function (error, response, body) { console.log('Status: ', response.statusCode); console.log('Headers: ', JSON.stringify(response.headers)); console.log('Response: ', body); console.log('Error: ', error); });
-
響應主體將如下所示:
{ "access_token": "ACikM-7Mu04V5s7YBlKgTiPu4ZO3AsTBlWt-73l5kXRN4IeRuIVlJHZkq_lFQdZBYfzT9B_nHNgcmNFdalxSiNdqOBaaV7wQCCnRCua_efHNCg9d_yLbezcjxr3AGcBKy9a8_t-uTMTA46T24LKMOBGBNJFkyATSZI4JuxU71VIyGF9hDisbKHmKC5G5HdQ0nJgyCD1w1zkKrB1CpFb5iiBuA_XOzehF-Xf5DBYnSkDhzzByuFwTv9dU9d7W6V2OuiKiTzCzY3st01qJTk6-an6GcAOD4N5pdN8prvvMDQhz_HunJIamvVGqBz7o3Ltw8CFFJMXKQdeOF8LX31BDnOvMBEz-xvuWErurvrA0r6x5eZH8SuZqeri4ryZAsaitHiJjz9gp533o", "token_type": "Bearer", "expires_in": 300 }
您將需要捕獲
access_token
。 除非您的通話是斷斷續續的,否則您將請求一個新的access_token
對於每個API調用,您還需要捕獲expires_in
值,以便您可以在以後的請求中使用它來檢查令牌是否仍然有效-如果無效,則需要請求一個新令牌。 的expires_in
值以秒為單位。 -
一旦有了
access_token
,您可以調用Brightcove API,包括Authorization
標頭形式:Authorization: Bearer {access_token}
看到 獲取訪問令牌 有關更多詳細信息和代碼示例。
一般授權
此方案主要適用於Brightcove合作夥伴,這些合作夥伴將創建可供各種組織的Brightcove用戶使用的應用程序。 此方案的工作流程如下所示:

實施此方案而不是第一個方案的唯一區別是,用戶必須從OAuth UI獲取您的應用的客戶端ID和密碼,並通過表單將其提供給您。 然後,您會將這些傳遞給您的應用,以提交請求 access_token
。 除此之外,一切都將是相同的。
獲取客戶憑證
獲取客戶端憑據的最簡單方法( client_id
以及 client_secret
)是使用 OAuth用戶界面。 但是,如果您希望直接從OAuth服務獲取它們,則可以通過發出POST請求來實現。 https://oauth.brightcove.com/v4/client_credentials
,傳遞以下標頭:
Content-Type: application/json
Authorization: BC_TOKEN your BC_TOKEN
您還需要發送JSON對像作為有效負載:
{
"type": "credential",
"maximum_scope": [
{
"identity": {
"type": "video-cloud-account",
"type": "perform-account",
"account-id": account_id1
},
"operations": [
"video-cloud/player/all"
]
},
{
"identity": {
"type": "video-cloud-account",
"type": "perform-account",
"account-id": account_id2
},
"operations": [
"video-cloud/player/all"
]
}
],
"name": "AnalyticsClient",
"description": "My analytics app"
}
操作
唯一會有所不同的是 operations
值,這取決於您要訪問哪個API,以及是否要訪問以進行讀取,寫入或同時執行這兩個操作。 看到 客戶端憑據請求的API操作 有關當前支持的所有操作的列表。
有關使用curl或Postman獲取客戶端憑據的詳細指南,請參閱:
使用OAuth
要構建邏輯以處理獲取API請求的訪問令牌,有兩種常規方法可以進行。
如果要構建單個服務器端應用程序,則將邏輯構建到應用程序中是有意義的。 操作順序如下所示:
相反,如果您要構建多個需要對Brightcove API進行調用的應用程序,或者如果您創建客戶端Web應用程序,則將代碼合併起來以使訪問令牌進入單個代理更為有意義。 在這種情況下,操作序列將如下所示:
看到 快速指引 有關創建簡單代理的詳細說明。
客戶樣本和庫
我們創造了 樣例客戶端實現 以多種語言提供給您實現模型。
還有OAuth2庫可用於多種語言,我們通常鼓勵您在可能的情況下使用這些庫,而不是與 OAuth API。 以下是可用庫的部分列表。 有關更多列表,請參見 http://oauth.net/2/
- 蟒蛇
- PHP
- 可可
- 可可
- iOS
- iPhone和iPad
- iOS和Mac MacOS
- iOS和Mac MacOS
- Java的
- 紅寶石
- 。NET
- Qt / C ++
- O2