시작하기

이 튜토리얼은 동영상 API를 사용하여 페이지에서 동영상을 생성하는 방법을 설명합니다. 터미널과 같은 명령줄 도구나 Postman과 같은 앱을 사용하여 기본 cURL 요청을 보낼 수 있고 그래프 API 탐색기에 대해 기본적으로 알고 있다고 가정합니다.

시작하기 전에

다음과 같은 항목이 필요합니다.

  • 기존 Facebook 앱. Facebook 앱이 없을 경우 Facebook for Developers로 이동하여 내 앱을 클릭하고 앱을 하나 만듭니다.
  • 5MB 청크로 분할한 10~20MB 동영상. 모든 청크가 하나의 디렉터리에 들어 있어야 합니다.
  • CREATE_CONTENT작업을 수행할 수 있는 페이지.
  • cURL 요청을 보낼 수 있는 명령줄 도구(예: 터미널) 또는 앱(예: Postman)에 대한 액세스.

1단계: 사용자 액세스 토큰 받기

일반적으로 Facebook 로그인을 앱에 구현하고 이를 사용하여 앱 사용자로부터 액세스 토큰을 가져와야 합니다. 그러나 이 튜토리얼에서는 Facebook 로그인을 이미 구현하였고 모든 앱에 대해 토큰을 손쉽게 생성할 수 있으므로 그래프 API 탐색기를 사용할 수 있습니다.

  1. 그래프 API 탐색기를 읽어들이고 Facebook 앱 드롭다운 메뉴에서 앱을 선택합니다.

  2. 사용자 또는 페이지 드롭다운 메뉴에서 사용자 액세스 토큰 가져오기를 선택하고 본인 자격으로 계속 인증합니다. 이전 앱을 다시 사용 중인 경우 이미 인증받았을 수 있습니다.

  3. 권한 섹션에서 권한 추가 검색 필드를 사용하여 pages_manage_engagementpages_read_user_content 권한을 검색하고 선택합니다.
  4. 액세스 토큰 만들기를 클릭합니다.
  5. 표시되는 모달 창에서 본인 자격으로 계속 진행하면서 최종적으로 동영상을 업로드하고자 하는 페이지를 선택합니다.
  6. 모달을 닫을 때까지 나머지 화면에서 다음으로 계속 진행합니다. 그러면 선택한 권한이 앱에 부여되고 사용자 액세스 토큰도 생성됩니다.
  7. 선택 사항. 파란색 정보 아이콘을 클릭하여 앱에 올바른 권한(범위)을 부여했는지 확인합니다.

2단계: 페이지 ID 및 토큰 가져오기

  1. 그래프 API 탐색기를 사용하여 GET /me/accounts 에지에 요청을 보냅니다. 그러면 사용자를 쿼리하고 마지막 단계에서 앱에 액세스 권한을 부여한 모든 페이지를 반환합니다.
  2. 응답에서 페이지를 확인하고 해당 ID(id)와 페이지 액세스 토큰(access_token)을 복사합니다.
  3. {
      "data": [
        {
          "access_token": "EBACf...",  //Copy your Page Access Token
          "category": "Media",
          "category_list": [
            {
              "id": "163003840417682",
              "name": "Media"
            }
          ],
          "name": "Metricsaurus",
          "id": "1755847768034402",  //Copy your Page ID
          "tasks": [
            "ANALYZE",
            "ADVERTISE",
            "MODERATE",
            "CREATE_CONTENT",
            "MANAGE"
          ]
        }
      ],
      "paging": {
        "cursors": {
          "before": "MTc1NTg0Nzc2ODAzNDQwMgZDZD",
          "after": "MTc1NTg0Nzc2ODAzNDQwMgZDZD"
        }
      }
    }
    

3단계: 동영상 세션 만들기

  1. 명령줄 도구에서 동영상 청크가 있는 폴더로 이동한 다음, cURL 요청을 graph-video.facebook.com 호스트의 POST /page-id/videos 에지로 보냅니다. Postman을 사용할 경우 요청 본문에 쿼리 매개변수 키와 값을 form-data로 포함합니다.

  2. 요청 샘플
    curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=start" \
      -F "file_size=77188035"
    
  3. 요청 경로에서 페이지 ID(1755847768034402)를 자신의 페이지 ID로 바꾸고, access_token은 조금 전에 복사한 페이지 액세스 토큰으로 설정하고 file_size는 동영상 파일의 전체 크기(단위: 바이트)로 설정합니다.

  4. API가 동영상 세션을 반환합니다.
    {
      "video_id": "225467151853466",
      "start_offset": "0",
      "end_offset": "1048576",
      "upload_session_id": "225467155186799"
    }
    
  5. end_offset을 제외한 모든 반환된 값을 복사합니다.

4단계: 첫 번째 동영상 청크 업로드

POST /{page-id}/videos 에지로 다른 요청을 보내고 upload_session_id와 첫 번째 동영상 청크의 이름을 포함합니다.

요청 샘플

curl -X POST \
  "https://graph-video.facebook.com/1755847768034402/videos" \
  -F "access_token=EBACf..." \
  -F "upload_phase=transfer" \
  -F "start_offset=0" \
  -F "upload_session_id=225467155186799" \
  -F "video_file_chunk=@xaa"

cURL을 사용할 경우 파일 이름 앞에 @ 기호를 포함합니다.

Postman을 사용할 경우 @ 기호를 생략하고 video_file_chunk파일로 설정하며(행에 커서를 가져가서 드롭다운 메뉴 실행) 첫 번째 청크 파일을 직접 선택합니다.

API가 새로운 start_offset으로 응답합니다. 새 값을 캡처합니다.

{
  "start_offset": "10485760",
  "end_offset": "15728640"
}

5단계: 나머지 동영상 청크 업로드

  1. 동일한 요청을 실행하되, start_offset은 이전 응답에서 반환된 새 start_offset 값으로 설정하고 video_file_chunk는 다음 차례의 동영상 청크 이름으로 설정합니다.
  2. curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=transfer" \
      -F "start_offset=10485760" \
      -F "upload_session_id=225467155186799" \
      -F "video_file_chunk=@xab"
    
    API가 새 start_offset 값으로 다시 한 번 응답합니다. 이 값은 다음 번 순서의 청크를 업로드하는 데 사용할 수 있습니다.
    {
      "start_offset":"15728640",
      "end_offset":"20971520"
    }
    
  3. 나머지 동영상 청크를 모두 올바른 순서로 업로드할 때까지 이 단계를 계속 반복합니다. 동영상 파일을 청크로 분할하는 데 사용한 프로그램에서 청크 이름을 순차적으로 지정해 줍니다.

6단계: 업로드 세션 종료

마지막 청크를 업로드하고 나면 동일한 엔드포인트로 마지막 요청을 보내고 upload_phase를 완료로 설정하여 업로드 세션을 종료합니다.

요청 샘플

curl -X POST \
  "https://graph-video.facebook.com/1755847768034402/videos"  \
  -F "access_token=EBACf..." \
  -F "upload_phase=finish" \
  -F "upload_session_id=225467155186799"

요청이 성공하면 API는 업로드 세션을 종료하고 true로 응답합니다.

{
  "success": true
}

Facebook에서 동영상을 결합하고 인코딩합니다. 인코딩 과정은 동영상 파일의 전체 크기에 따라 모두 인코딩될 때까지 최대 몇 분이 소요될 수 있습니다.