지원 지원 문의 | 시스템 상태 시스템 상태

클라이언트 자격 증명 만들기

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

소개

클라이언트 자격 증명을 얻는 것은 대부분의 Brightcove API가 요청을 인증하는 데 사용하는 액세스 토큰을 얻기위한 일회성 필수 조건입니다.

클라이언트 자격 증명에 대한 전체 설명은 Brightcove OAuth 서비스 작동 방식.

이 샘플은 웹 앱에서 클라이언트 자격증 명을 얻는 방법을 보여줍니다. 왜냐하면 OAuth API CORS를 사용할 수없고 요청이 서버 측에서 이루어져야하는 경우 앱은 프록시에 필요한 정보를 보내고 프록시는 API 요청을 만들어 클라이언트에 응답을 보냅니다. 여기에있는 프록시는 PHP로 작성되었지만 서버 측 언어로는 가능합니다. 인터넷을 통해 앱에 POST 요청을 보내면됩니다.

BC_TOKEN 받기

를 얻으려면 client_idclient_secret 를 통해 OAuth API, 당신이 필요합니다 BC_TOKEN 귀하의 요청을 인증합니다. BC_TOKEN은 Studio에 로그인 할 때 쿠키로 설정됩니다. 원하는 방식으로 쿠키를 가져올 수 있지만 더 쉽게 사용할 수 있도록 다음 자바 스크립트 스 니펫을 만들었습니다. Studio에 로그인 한 상태에서 개발자 콘솔에 붙여 넣을 수 있습니다. 반환BC_TOKEN을 포함하는 프롬프트가 나타납니다.

자격증 명 응용 프로그램 가져 오기

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

펜보기 OAuth API 샘플 : 클라이언트 자격 증명 만들기 Brightcove 학습 서비스 제공 (@rcrooks1969)에 코드 펜.

CodePen 사용

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

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

프록시 코드

이 페이지에서 샘플 앱을 자신 만의 버전으로 만들려면 자체 프록시를 만들어야합니다. 이 프록시는 대부분의 샘플 앱에 사용 된 프록시와 다소 다릅니다. OAuth API 클라이언트 자격 증명을 만드는 방법은 일반적인 API 인증 방법과 다릅니다. 여기에 사용 된 프록시 코드가 아래에 나와 있습니다.

        <?php
        /**
         * client-credentials-proxy.php - proxy for Brightcove RESTful APIs
         * gets a client id and client secret and returns the whole response
         * Accessing:
         *         (note you should *always* access the proxy via HTTPS)
         *     Method: POST
         *
         * @post {string} bc_token - BC_TOKEN with admin permissions on all accounts that credentials are requested for
         * @post {JSONstring} requestBody - the full request body as a JSON string
         *
         * @returns {string} $response - JSON response received from the OAuth API
         */
        
        // security checks
        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":"Only requests from http://docs.brightcove.com or http:solutions.brightcove.com are accepted by this proxy"}');
        }
        
        // CORS enablement and other headers
        header("Access-Control-Allow-Origin: *");
        header("Content-type: application/json");
        header("X-Content-Type-Options: nosniff");
        header("X-XSS-Protection");
        
        // get data or die
        if ($_POST["requestBody"]) {
            $data = json_decode($_POST["requestBody"]);
        } else {
          exit("request body missing");
        }
        // get request type or default to POST
        if ($_POST["requestType"]) {
            $method = $_POST["requestType"];
        } else {
          $method = 'POST';
        }
        // get bc_token or die
        if ($_POST["bc_token"]) {
            $bc_token = $_POST["bc_token"];
        } else {
          exit("bc_token missing");
        }
        
        $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('An error occurred on making the request');
        } else {
          echo $response;
        }
        
        ?>
        

12 년 2020 월 XNUMX 일에 마지막으로 업데이트 된 페이지