플랫폼 버전 관리

Facebook 플랫폼은 앱 빌드 도구가 장기적으로 변경 사항을 적용할 수 있도록 버전 관리를 지원합니다. 이 문서에서는 버전이 SDK와 API에 어떤 영향을 미치고, 요청에서 이러한 버전을 어떻게 사용하는지 설명합니다.

버전 관리

일부 API와 SDK는 동일한 버전 관리 시스템을 공유하지 않습니다. 예를 들어 그래프 API의 버전 관리 기간과 번호 지정 방식은 iOS용 Facebook SDK와 다릅니다. 모든 Facebook SDK는 API의 각 버전과 상호작용하는 기능을 지원합니다. 여러 버전의 API 또는 SDK가 동시에 존재할 수 있고 버전마다 기능이 다릅니다.

최신 그래프 API 버전은 무엇인가요?

최신 그래프 API 버전: v21.0

버전을 지정하는 이유는 무엇인가요?

버전 관리의 목표는 앱을 빌드하는 개발자들이 API 또는 SDK가 변경될 때 미리 확인할 수 있게 하는 것입니다. 버전 관리는 웹 개발에 도움이 되기도 하지만 모바일 개발에 있어 특히 중요합니다. 휴대폰에서 앱을 사용하는 사용자가 업그레이드하는 데 시간이 오래 걸릴 수 있기 때문입니다(또는 전혀 업그레이드하지 않을 수도 있음).

각 버전은 릴리스 시점으로부터 2년 이상 유지되므로 앱이 작동하도록 유지하는 기간과 새로운 버전으로 업데이트하기 전까지 충분한 시간을 제공합니다.

버전 일정

각 버전은 2년 이상 작동이 보장됩니다. 다음 버전이 릴리스된 후 2년이 지나면 이전 버전을 사용할 수 없습니다. 예를 들어 API 버전 v2.3은 2015년 3월 25일에 릴리스되었고 API 버전 v2.4는 2015년 8월 7일에 릴리스된 경우 v2.3은 v2.4가 릴리스되고 2년이 지난 2017년 8월 7일에 만료됩니다.

API의 경우 어떤 버전을 사용할 수 없게 되면 해당 API에 보내는 모든 호출은 그다음으로 오래되고 사용 가능한 버전으로 기본 지정됩니다. 타임라인의 예는 다음과 같습니다.

SDK의 경우 버전은 다운로드 가능한 패키지이므로 항상 사용 가능한 상태로 유지됩니다. 그러나 SDK가 더 이상 작동하지 않는 API나 메서드를 사용할 수 있으므로 지원이 종료된 SDK는 더 이상 작동하지 않는 것으로 간주해야 합니다.

버전 타임라인, 변경 사항, 릴리스 날짜에 대한 구체적인 내용은 변경 사항 페이지를 참조하세요.

한 버전에서는 모든 것이 전혀 변경되지 않나요?

Facebook은 보안 또는 개인정보와 관련된 문제에 대해서는 단기간 내에 API를 변경할 수 있습니다. 이러한 변경 사항은 자주는 아니지만 발생하기도 합니다.

API에 버전을 지정하지 않으면 어떻게 되나요?

버전을 지정하지 않고 보낸 API 호출은 버전을 지정하지 않은 호출이라고 부릅니다. 예를 들어 현재 버전이 v4.0일 때 호출은 다음과 같습니다.

curl -i -X "https://graph.facebook.com/v4.0/{my-user-id}&access_token={access-token}"

버전을 지정하지 않은 동일한 호출은 다음과 같습니다.

curl -i -X "https://graph.facebook.com/{my-user-id}&access_token={access-token}"

버전을 지정하지 않은 호출은 앱 대시보드에서 설정 > 고급API 버전 업그레이드 카드에서 설정한 버전을 사용합니다. 다음 예시에서 앱 대시보드에 설정된 버전은 v2.10이고 버전을 지정하지 않은 호출은 다음과 같습니다.

curl -i -X "https://graph.facebook.com/v2.10/{my-user-id}&access_token={access-token}"

가능하면 항상 버전을 지정하는 것이 좋습니다.

제한 사항

  • Facebook JavaScript SDK에는 버전을 지정하지 않은 API 호출을 보낼 수 없습니다.

앱에서 기존 버전보다 오래된 버전을 호출할 수 있나요?

API 호출에서 오래된 버전을 지정할 수 있습니다. 단, 사용 가능한 버전이어야 하며 앱에서 해당 버전으로 호출을 보낸 적이 있어야 합니다. 예를 들어 v2.0이 릴리스된 후에 앱을 만들었고 v2.0을 사용하여 호출을 보낸 경우 더 새로운 버전이 릴리스되었더라도 v2.0 버전이 만료될 때까지 해당 버전으로 호출을 보낼 수 있습니다. v2.0 이후에 앱을 만들었지만 v2.2까지 호출을 보낸 적이 없는 경우 앱에서 v2.0 또는 v2.1을 사용하여 호출을 보낼 수 없습니다. v2.2 이상 버전으로만 호출을 보낼 수 있습니다.

마케팅 API 버전 관리

마케팅 API는 자체적인 버전 관리 방식이 있습니다. 버전 번호와 일정은 모두 그래프 API의 상태와 다릅니다.

마케팅 API 버전 관리에 대해 자세히 알아보기

버전이 지정된 요청 보내기

그래프 API

코어든 확장이든 거의 모든 그래프 API 엔드포인트가 버전이 지정된 경로를 통해 제공됩니다. 그래프 API 빠른 시작 가이드에서 그래프 API로 버전을 사용하기 위한 전체 가이드를 확인할 수 있습니다.

대화 상자

버전이 지정된 경로는 API 엔드포인트뿐만 아니라 대화 상자와 소셜 플러그인에도 적용됩니다. 예를 들어 웹 앱에 Facebook 로그인 대화 상자를 생성하고 싶다면 대화 상자를 생성하는 엔드포인트 앞에 버전 번호를 붙일 수 있습니다.

https://www.facebook.com/v21.0/dialog/oauth?
  client_id={app-id}
  &redirect_uri={redirect-uri}

소셜 플러그인

소셜 플러그인의 HTML5 또는 xfbml 버전을 사용하는 경우 렌더링되는 버전은 JavaScript SDK 초기화할 때 지정한 버전에 따라 결정됩니다.

플러그인 중 하나의 iframe 또는 일반 링크 버전을 삽입하는 경우 플러그인의 소스 경로 앞에 버전 번호를 붙입니다.

<iframe
  src="//www.facebook.com/v21.0/plugins/like.php?href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;width&amp;layout=standard&amp;action=like&amp;show_faces=true&amp;share=true&amp;height=80&amp;appId=634262946633418" 
  scrolling="no" 
  frameborder="0" 
  style="border:none; overflow:hidden; height:80px;" 
  allowTransparency="true">
</iframe>

SDK에서 버전이 지정된 요청 보내기

iOS, Android 또는 JavaScript용 Facebook SDK를 사용할 경우 대체로 버전이 지정된 호출을 자동으로 보냅니다. 각 SDK의 자체 버전 관리 시스템과는 다릅니다.

JavaScript

JavaScript SDK는 sdk.js 경로를 사용하는 경우에만 다른 API 버전을 사용할 수 있습니다.

JavaScript SDKFB.init()를 사용하는 경우 다음과 같이 버전 매개변수를 사용해야 합니다.

FB.init({
  appId      : '{app-id}',
  version    : 'v21.0'
});

초기화에서 버전 플래그를 설정할 경우 FB.api()로 보내는 모든 호출은 호출된 경로 앞에 버전이 자동으로 첨부됩니다. 호출되는 Facebook 로그인과 관련된 모든 대화 상자도 마찬가지입니다. 해당 버전 API에 대한 Facebook 로그인 대화 상자를 가져옵니다.

필요한 경우 FB.api() 호출에서 엔드포인트의 경로 앞에 버전을 붙이기만 하면 버전을 재정의할 수 있습니다.

iOS

릴리스된 iOS용 Facebook SDK의 각 버전은 릴리스 날짜에 제공되는 버전과 연동됩니다. 즉, 새로운 SDK로 업그레이드하는 경우 최신 API 버전으로도 업그레이드됩니다([FBSDKGraphRequest initWithGraphPath]로 사용 가능한 이전 API 버전을 수동으로 지정했더라도 상관없음). API 버전은 iOS용 Facebook SDK의 각 버전이 릴리스될 때 목록으로 나열됩니다.

JavaScript SDK와 마찬가지로, iOS용 Facebook SDK를 통해 그래프 API로 보내는 모든 호출 앞에 버전이 붙습니다. 예를 들어 v2.7이 API의 최신 버전이라면 다음의 코드 샘플에서 사용된 /me/friends 호출에서는 실제로 /v2.7/me/friends를 호출합니다.

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/friends"
  parameters:@{@"fields": @"cover,name,start_time"}]
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
        (...)
    }];

[FBSDKGraphRequestConnection overrideVersionPartWith]로 호출 버전을 재정의할 수 있습니다.

Android

릴리스된 Android용 Facebook SDK의 각 버전은 릴리스 날짜에 제공되는 버전과 연동됩니다. 즉, 새로운 SDK로 업그레이드하는 경우 최신 API 버전으로도 업그레이드됩니다(GraphRequest.setVersion()로 사용 가능한 이전 API 버전을 수동으로 지정했더라도 상관없음). API 버전은 Android용 Facebook SDK의 각 버전이 릴리스될 때 목록으로 나열됩니다.

JavaScript SDK와 마찬가지로, Android용 Facebook SDK를 통해 그래프 API로 보내는 모든 호출 앞에 버전이 붙습니다. 예를 들어 v2.7이 API의 최신 버전이라면 다음의 코드 샘플에서 사용된 /me 호출에서는 실제로 /v2.7/me를 호출합니다.

GraphRequest request = GraphRequest.newGraphPathRequest (
        accessToken,
        "/me/friends",
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
                   JSONObject object,
                   GraphResponse response) {
                // Application code
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link");
request.setParameters(parameters); 
request.executeAsync();

GraphRequest.setVersion()으로 호출 버전을 재정의할 수 있습니다.