簡介
大多數Brightcove REST API使用OAuth2作為身份驗證的基礎,我們將在以下各節中更詳細地介紹OAuth實現。
但是,首先請注意,兩個API使用不同的身份驗證方法:
策略密鑰認證: Playback API
Playback API 主要用於從中檢索視頻和播放列表數據 player或Web門戶,使用 policy_key
,用於身份驗證,通常作為參數傳遞給 Accept
標頭:
Accept: application/json;pk={policy_key}
策略密鑰是自動生成的 Brightcove players,並且可以取自 player 組態,或使用 Policy API
API密鑰身份驗證: Live API
Live API 使用在設置帳戶以驗證請求時提供的API密鑰。 API密鑰在 X-API-KEY
標頭:
X-API-KEY : {YOUR_APIKey}
OAuth2驗證
其他REST API Video Cloud 使用OAuth2進行身份驗證,對於熟悉OAuth2的用戶,我們使用客戶端憑據流。 涉及兩個操作:
- 獲取客戶憑證: 這是一次性操作,最容易使用 API認證 Studio中管理工具的頁面。 看到 管理API身份驗證憑據 有關詳細信息和分步說明。
- 獲取訪問令牌: 每個API請求必須包含以
Authorization
標頭:Authorization: Bearer {access_token}
訪問令牌 live 持續五分鐘,因此除非您運行的進程將生成重複的API請求,否則您可能只想為每個請求獲取一個新的API。
通過向Brightcove的請求發送客戶端憑據來獲得訪問令牌 OAuth API。 看 獲取訪問令牌 有關詳細信息。 還有一個 示例應用 您可以使用一次性令牌來測試API調用。 還有有關配置流行的REST客戶端的說明 郵差 以及 失眠.
通過的客戶憑證 OAuth API
如果您想要或需要使用 OAuth API,以下是指導您獲取客戶憑據的步驟。 您首先需要獲取您的BC_TOKEN,該證書用於對您的客戶端憑據請求進行身份驗證。
讓您的 BC_TOKEN
和帳號
您需要登錄Studio才能獲取您的 BC_TOKEN
.
- 照常登錄Studio。
- 您需要您的帳號(在Studio中稱為發布商ID),您可以通過在Studio中轉到您的帳戶信息來獲得:
帳戶ID - 在Studio中打開任何頁面的情況下,打開瀏覽器的開發人員工具,轉到控制台,然後粘貼以下代碼:
var cookiesArray = document.cookie.split(";"), cookiesObj = {}, i, tmpArray = []; for (i = 0; i < cookiesArray.length; i++) { tmpArray = cookiesArray[i].split("="); if (tmpArray[0].indexOf('BC_TOKEN') > -1) { cookiesObj.BC_TOKEN = tmpArray[1]; } } window.prompt("BC_TOKEN:", cookiesObj.BC_TOKEN);
...然後按回車鍵。
- 您應該會看到一個提示,其中包含您的
BC_TOKEN
:BC_TOKEN - 如果您有BC_TOKEN,請繼續 獲取客戶憑證 部分; 如果由於某些原因您沒有使用前面的步驟獲取BC_TOKEN,只需轉到控制台,鍵入
document.cookies
,然後按回車鍵。 - 該頁面的所有cookie將以分號分隔的列表形式返回。 在列表中找到BC_TOKEN cookie,然後復制值:
從控制台獲取BC_TOKEN
輕松賺錢 client_credentials
現在,我們準備調用OAuth服務以檢索客戶端憑據。 我們必須指定一個我們要為其請求憑據的客戶端應用程序名稱-該名稱是任意的,旨在幫助您跟踪憑據的用途-在這裡,我們將僅使用“ ingest-profiles-api-client”。 我們還必須在數組中指定要訪問的操作的範圍,在這裡我們將使用它。 可用的操作顯示在 客戶端憑據請求的API操作。 在以下步驟中,您將指定 Ingest Profiles API.
- 編輯以下curl命令,然後將其粘貼到命令行中並按 返回。 您必須為以下三個值提供特定的值:
- 您的BC_TOKEN
- 您的憑證名稱
- 您的帳號
curl \ --include \ --header "Authorization: BC_TOKEN your_BC_TOKEN" \ --data 'name=ingest-profiles-api-client&maximum_scope=[{ "identity": { "type": "video-cloud-account", "account-id": your_account_id }, "operations": [ "video-cloud/ingest-profiles/profile/read", "video-cloud/ingest-profiles/profile/write", "video-cloud/ingest-profiles/account/read", "video-cloud/ingest-profiles/account/write" ] }]' \ https://oauth.brightcove.com/v4/client_credentials
- 響應應如下所示(已添加格式):
{ "redirect_url": null, "maximum_scope": [ { "identity": { "type": "video-cloud-account", "account-id": your_video_cloud_account_id }, "operations": [ "video-cloud/ingest-profiles/profile/write", "video-cloud/ingest-profiles/account/write", "video-cloud/ingest-profiles/profile/read", "video-cloud/ingest-profiles/account/read" ] } ], "name_html": "ingest-profiles-api-client", "issued_to": "your_email@host.com", "trusted": null, "expires_at": null, "issued_at": "2015-06-01T15:09:00Z", "name": "ingest-profiles-api-client", "description_html": null, "revoked": null, "type": "credential", "client_secret": "Ifckr6cWtxOh_NZnEVhKCgcqZaqoMcPuoJ-VGuivIE_psPoPUt2hGqUK15uPON3x3m748ElazZoOKPxbI3-4nQ", "description": null, "client_id": "da270d86-f3cd-4ee6-85b0-047df97a0db2", "issued_user": your_video_cloud_account_id }
- 複製並保存
client_id
以及client_secret
,因為您隨時都需要這些,access_token
.
通過訪問令牌 OAuth API
與客戶憑證不同,訪問令牌是短令牌,lived-目前它們將在5分鐘後過期。 您需要為每個API請求獲取一個新的API。 您當然可以在應用程序中構建邏輯,以檢查最新的訪問令牌以查看其是否已超時,但需要向 Ingest Profiles API 可能很少且相差甚遠,因此沒有充分的理由這樣做。
實際上,該API可能是您不常使用的API,因此根本不值得圍繞它構建應用程序。 替代方法是使用 這個shell腳本 Brightcove學習服務所建立的。 它允許您輸入客戶端ID和密碼,API請求和方法以及任何請求數據。 然後得到一個 access_token
,發出API請求,然後輸出響應。 (請注意,shell腳本使用的是cURL,它是本地安裝在Mac MacOS和其他Unix / Linux系統上的,或者 可以安裝在Windows上.
要檢索訪問令牌,您可以發出POST請求:
https://oauth.brightcove.com/v4/access_token
您必須通過此調用傳遞以下標頭:
Content-Type: application/x-www-form-urlencoded
Authorization: Basic {client_id}:{client_secret}
整個 {client_id}:{client_secret}
字符串必須經過Base64編碼(如果您將字符串傳遞為,curl會自動對字符串進行Base64編碼 --user
證書; 在其他語言中,您需要自己處理Base64編碼)。
您還必鬚髮送以下鍵/值對作為請求正文或URL參數:
grant_type=client_credentials
響應將如下所示(為便於閱讀,此處打印得很漂亮):
{
"access_token": "ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3SxGCOWLUf5W4G7X22PRjmR9StvFUqzpVZ1suOfyfOigdi-rnohxyEaSSuZceeLw_9OBW7fXldOG05HEgkeK3N-DBZZZyilodmjA1JWZHbgI3IU7Rmz5IPGyi-sDxHN3KlOr1BDZlLZpXPdFPwEyb6idq-z8AL-blKTSMtNI3_fz3oNBisfrHGUv5tXHoQT4B7FYcvdrap16gTOO7_wNt1zmgLJiUHvyxZgsgBchm_AhohVL-AYgcfCbCR0v7d2hgI4ag35pnZNeujDiBLfnCFcVMlqQGq8UEVZrmU9a8y4pVAGih_EImmghqmSrkxLPYZ800-vIWX-lw",
"token_type": "Bearer",
"expires_in": 300
}
access_token
價值是您必須傳遞的 Authorization
標頭以及以下形式的API調用:
Authorization: Bearer {access_token}
expired_in
value是訪問令牌有效的秒數。
有關更多信息和示例代碼,請參見 獲取訪問令牌