클라이언트 자격 증명 생성

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

서문

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

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

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

BC_토큰 얻기

얻으려면client_id그리고client_secret OAuth API를 통해BC_TOKEN귀하의 요청을 인증합니다. 귀하의 BC_TOKEN은 Studio에 로그인 할 때 쿠키로 설정됩니다. 원하는 방식으로 쿠키를 가져올 수 있지만, 더 쉽게 사용할 수 있도록 다음과 같은 JavaScript 스니펫을 만들었습니다. Studio에 로그인하여 개발자 콘솔에 붙여넣고 return키를 누르면 BC_TOKEN이 포함된 프롬프트가 나타납니다.

자격 증명 앱 받기

소스 코드

GitHub 리포지토리에서 이 샘플과 관련된 모든 코드를 찾아보세요 .

샘플 앱

OAuth API 샘플을 참조하세요. 클라이언트 자격 증명 만들기 Brightcove 학습 서비스( @rcrooks1969 ) 에코드펜 .

코드펜 사용

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

프록시 코드

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

         <  ?PHP
        /**
         * client-credentials-proxy.php-Brightcove RESTful API 용 프록시
         * 클라이언트 ID와 클라이언트 암호를 가져와 전체 응답을 반환합니다.
         * Accessing:
         * (HTTPS를 통해 *항상* 프록시에 액세스해야 한다는 점을 참고)
         * 방법: 우편
         *
         * @post {string} bc_token-자격 증명이 요청 된 모든 계정에 대한 관리자 권한이있는 BC_TOKEN
         * @post {JSONstring} requestBody-JSON 문자열로 된 전체 요청 본문
         *
         * @returns {문자열} $ 응답 - OAuth API에서 수신 된 JSON 응답
         */
        
        // 보안 검사
        if (stros ($_SERVER ['HTTP_REFERER'], 'solutions.brightcove.com') = false & stros ($_SERVER ['HTTP_REFERER'], 'ondemand.brightcovelearning.com') = 거짓 & 스트로스 ($_SERVER ['HTTP_REFERER']], 'video.brightcovelearning.com') = false & stros ($_SERVER ['HTTP_REFERER']], 'video.brightcovelearning.com' ') = false & stros ($_SERVER [' HTTP_REFERER '],' s.codepen.io ') = false&stros ($_SERVER [' HTTP_REFERER '],' fiddle.jshell.net ') = false & stros ($_SERVER [' HTTP_REFERER '],' players.brightcoverer ') .net') == 거짓 && 스트로스 ($_SERVER ['HTTP_REFERER'], 'support.brightcove.com') = 거짓 & 스트로스 ($_SERVER ['HTTP_REFERER'], 'master-7rqtwti-6sglloa4yrkti.us.platform.sh') = false) {
            종료 ('{"오류”: “이 프록시는 https://docs.brightcove.com 또는 https:solutions.brightcove.com의 요청만 수락합니다"}').
        }
        
        //CORS 활성화 및 기타 헤더
        header("Access-Control-Allow-Origin: *");
        헤더 (“콘텐츠 유형: 응용 프로그램/json”);
        헤더 (“X-컨텐츠 유형 - 옵션: nosniff”);
        헤더 (“X-XSS 보호”);
        
        // 데이터를 얻거나 죽는다
        if ($_POST["requestBody"]) {
            $data = json_decode($_POST["requestBody"]);
        } else {
          종료 (“요청 본문 누락”);
        }
        // 요청 유형을 가져 오거나 POST로 기본 설정
        if ($_POST["requestType"]) {
            $method = $_POST["requestType"];
        } else {
          $ method = 'POST';
        }
        // bc_token을 얻거나 죽습니다.
        if ($_POST ["bc_token"]) {
            $bc_token = $_POST ["bc_token"];
        } else {
          종료 (“bc_token 누락”);
        }
        
        $ request = "https://oauth.brightcove.com/v4/client_credentials";
        $ ch = curl_init ($ request);
        curl_setopt_array($ch, array(
            컬롭트_커스텀 리퀘스트 => $메소드,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_SSL_VERIFYPEER => FALSE,
            컬롭트_HTTP헤더 => 배열 (
                '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;
        }
        
        ?>