지원 고객 지원 문의 | 시스템 상태 시스템 상태
페이지 내용

    클라이언트 자격 증명 생성

    이 샘플을 사용하면 하나 이상의 계정에 대한 클라이언트 자격 증명을 만들어 선택한 API 권한을 할당할 수 있습니다.

    서문

    클라이언트 자격 증명 가져 오기는 액세스 토큰을 가져 오기위한 일회성 전제 조건이며, 대부분의 Brightcove API는 요청을 인증하는 데 사용합니다.

    클라이언트 자격 증명에 대한 전체 설명은 다음을 참조하십시오. Brightcove OAuth 서비스 작동 방식 .

    이 샘플은 웹앱에서 클라이언트 자격 증명을 가져 오는 방법을 보여줍니다. OAuth API는 CORS를 지원하지 않으며 서버 측에서 요청을해야하기 때문에 앱은 필요한 정보를 프록시로 보낸 다음 api 요청을하고 응답을 클라이언트로 다시 보냅니다. 여기서 프록시는 PHP로 작성되었지만 모든 서버 측 언어가 가능합니다. 인터넷을 통해 앱에 POST 요청을 보낼 수만 있으면됩니다.

    BC_토큰 얻기

    얻기 위해client_idclient_secret OAuth API를 통해BC_TOKEN요청을 인증합니다. 귀하의 BC_TOKEN은 Studio에 로그인 할 때 쿠키로 설정됩니다. 원하는 방식으로 쿠키를 얻을 수 있지만 더 쉽게하기 위해 다음 JavaScript 스 니펫을 만들었습니다. Studio에 로그인 할 때 개발자 콘솔에 붙여 넣을 수 있습니다. 반환 , BC_TOKEN이 포함 된 프롬프트가 나타납니다.

    자격 증명 앱 받기

    소스 코드

    GitHub 저장소에서이샘플과 관련된 모든 코드를 찾으십시오.

    샘플 앱

    펜보기 OAuth API 샘플 : 클라이언트 자격 증명 생성게시자 : Brightcove Learning Services ( 뿡 빵뀨 ) 의 위에 CodePen .

    코드펜 사용

    위의 CodePen을 효과적으로 사용하기위한 몇 가지 팁은 다음과 같습니다.

    • 결과버튼을 클릭하여 플레이어의 실제 표시를 토글합니다.
    • HTML/CSS/JS버튼을 클릭하여 코드 유형 중 하나를 표시합니다.
    • 오른쪽 상단모서리에있는 CodePen에서 편집을클릭하여이 CodePen을 자신의 계정으로 포크하십시오.
    • GitHub 저장소에서이샘플과 관련된 모든 코드를 찾으십시오.

    프록시 코드

    이 페이지에서 자신의 버전을 샘플 응용 프로그램을 빌드하려면 자신의 프록시를 만들고 호스팅해야합니다. 이 프록시는 대부분의 샘플 앱에 사용되는 프록시와 약간 다릅니다. 클라이언트 자격 증명을 만들기위한 OAuth API 방법에 대한 인증이 일반 API 인증에 대한 인증과 다르기 때문입니다. 여기에 사용 된 프록시의 전체 코드는 다음과 같습니다.

            <?php
            /**
             * client-credentials-proxy.php-Brightcove RESTful API 용 프록시
             * 클라이언트 ID와 클라이언트 암호를 가져와 전체 응답을 반환합니다.
             * Accessing:
             *         (note you should *always* access the proxy via HTTPS)
             *     Method: 우편
             *
             * @post {string} bc_token-자격 증명이 요청 된 모든 계정에 대한 관리자 권한이있는 BC_TOKEN
             * @post {JSONstring} requestBody-JSON 문자열로 된 전체 요청 본문
             *
             * @returns {문자열} $ 응답 - OAuth API에서 수신 된 JSON 응답
             */
            
            // 보안 검사
            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": "이 프록시는 http://docs.brightcove.com 또는 http : solutions.brightcove.com의 요청 만 허용합니다."}');
            }
            
            //CORS 활성화 및 기타 헤더
            header("Access-Control-Allow-Origin: *");
            헤더 (“콘텐츠 유형: 응용 프로그램/json”);
            헤더 (“X-컨텐츠 유형 - 옵션: nosniff”);
            헤더 (“X-XSS 보호”);
            
            // 데이터를 얻거나 죽는다
            if ($_POST["requestBody"]) {
                $data = json_decode($_POST["requestBody"]);
            } else {
              exit ( "요청 본문 누락");
            }
            // 요청 유형을 가져 오거나 POST로 기본 설정
            if ($_POST["requestType"]) {
                $method = $_POST["requestType"];
            } else {
              $ method = 'POST';
            }
            // bc_token을 얻거나 죽습니다.
            if ($ _POST [ "bc_token"]) {
                $ bc_token = $ _POST [ "bc_token"];
            } else {
              exit ( "bc_token 누락");
            }
            
            $ 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 ( '요청 중 오류가 발생했습니다');
            } else {
              echo $response;
            }
            
            ?>