การกำหนดเวอร์ชั่นของแพลตฟอร์ม

แพลตฟอร์มของ Facebook รองรับการกำหนดเวอร์ชั่น ผู้สร้างแอพจึงสามารถเปิดตัวการเปลี่ยนแปลงได้เมื่อเวลาผ่านไป ซึ่งเอกสารนี้จะอธิบายว่าเวอร์ชั่นต่างๆ ส่งผลต่อ SDK และ API อย่างไร รวมถึงวิธีการใช้เวอร์ชั่นเหล่านั้นในคำขอของคุณ

การกำหนดเวอร์ชั่น

API และ SDK บางรายการไม่ได้ใช้ระบบการกำหนดเวอร์ชั่นเดียวกัน ตัวอย่างเช่น API กราฟนี้มีการกำหนดเวอร์ชั่นด้วยความเร็วและการกำหนดหมายเลขที่ต่างกัน เมื่อเทียบกับ Facebook SDK สำหรับ iOS โดย Facebook SDK ทั้งหมดจะรองรับความสามารถในการโต้ตอบกับ API เวอร์ชั่นต่างๆ ของเรา จึงทำให้มี API หรือ SDK ได้หลายเวอร์ชั่นในเวลาเดียวกัน ซึ่งแต่ละเวอร์ชั่นก็จะมีฟังก์ชั่นการทำงานที่แตกต่างกันไป

API กราฟเวอร์ชั่นล่าสุดคือเวอร์ชั่นอะไร

API กราฟเวอร์ชั่นล่าสุดคือ v21.0

เหตุใดจึงมีเวอร์ชั่นต่างๆ

การกำหนดเวอร์ชั่นมีเป้าหมายเพื่อช่วยให้ผู้พัฒนาที่สร้างแอพสามารถทำความเข้าใจล่วงหน้าได้ว่าเมื่อใดที่ API หรือ SDK อาจมีการเปลี่ยนแปลง เวอร์ชั่นต่างๆ จะช่วยในด้านการพัฒนาเว็บ แต่ก็มีความสำคัญอย่างมากต่อการพัฒนามือถือ เนื่องจากคนที่ใช้แอพของคุณบนโทรศัพท์อาจใช้เวลาในการอัพเกรดนานกว่า (หรืออาจไม่เคยอัพเกรดเลย)

แต่ละเวอร์ชั่นจะใช้งานได้อย่างน้อย 2 ปีนับจากวันที่เปิดตัว ซึ่งช่วยให้คุณเห็นลำดับเวลาที่ชัดเจนว่าแอพของคุณจะทำงานได้อีกนานเท่าไร และคุณจะต้องใช้เวลาเท่าใดเพื่ออัพเดตแอพให้เป็นเวอร์ชั่นใหม่ล่าสุด

กำหนดเวลาเวอร์ชั่น

เรารับประกันว่าแต่ละเวอร์ชั่นจะทำงานได้อย่างน้อย 2 ปี เวอร์ชั่นนั้นๆ จะไม่สามารถใช้งานได้อีกต่อไปนับจากวันที่เปิดตัวเวอร์ชั่นต่อมาเป็นเวลา 2 ปี ตัวอย่างเช่น หาก API เวอร์ชั่น 2.3 เปิดตัววันที่ 25 มีนาคม 2015 และ API เวอร์ชั่น 2.4 เปิดตัววันที่ 7 สิงหาคม 2015 หมายความว่า API เวอร์ชั่น 2.3 จะหมดอายุในวันที่ 7 สิงหาคม 2017 ซึ่งเท่ากับ 2 ปีหลังจากที่เปิดตัว API เวอร์ชั่น 2.4

สำหรับ API เมื่อเวอร์ชั่นนั้นๆ ไม่สามารถใช้งานได้อีกต่อไป ระบบจะเปลี่ยนค่าเริ่มต้นให้การเรียกใช้เวอร์ชั่นดังกล่าวเท่ากับเป็นการเรียกใช้เวอร์ชั่นที่เก่าที่สุดรองลงมาซึ่งยังใช้งานได้อยู่ ตัวอย่างลำดับเวลามีดังนี้:

สำหรับ SDK เวอร์ชั่นนั้นๆ จะใช้งานได้เสมอเนื่องจากเป็นแพ็คเกจที่ดาวน์โหลดได้ แต่ SDK ดังกล่าวอาจต้องใช้ API หรือเมธอดอื่นๆ ที่ใช้งานไม่ได้แล้ว ดังนั้นคุณจึงควรสันนิษฐานว่า SDK ที่หมดอายุจะใช้งานไม่ได้อีกต่อไป

คุณสามารถดูข้อมูลเฉพาะเกี่ยวกับลำดับเวลาของเวอร์ชั่น การเปลี่ยนแปลง และวันเปิดตัวได้ในหน้าบันทึกการเปลี่ยนแปลงของเรา

ทุกอย่างในเวอร์ชั่นจะคงเดิมไม่เปลี่ยนแปลงหรือไม่

Facebook ขอสงวนสิทธิ์ในการเปลี่ยนแปลง API ทุกรายการในช่วงระยะเวลาสั้นๆ หากมีปัญหาเกี่ยวกับการรักษาความปลอดภัยหรือความเป็นส่วนตัว ทั้งนี้ การเปลี่ยนแปลงเหล่านี้เกิดขึ้นไม่บ่อยครั้งนัก แต่ก็สามารถเกิดขึ้นได้

จะเกิดอะไรขึ้นหากฉันไม่ได้กำหนดเวอร์ชั่นสำหรับ API

เราเรียกการเรียกใช้ API โดยไม่กำหนดเวอร์ชั่นว่าเป็นการเรียกที่ไม่ได้กำหนดเวอร์ชั่น ตัวอย่างเช่น หากเวอร์ชั่นปัจจุบันคือเวอร์ชั่น 4.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 ในแดชบอร์ดของแอพ ซึ่งอยู่ในส่วนการตั้งค่า > ขั้นสูง ในตัวอย่างด้านล่างนี้ เวอร์ชั่นที่ตั้งค่าในแดชบอร์ดของแอพคือเวอร์ชั่น 2.10 และการเรียกที่ไม่ได้กำหนดเวอร์ชั่นจะมีลักษณะดังนี้:

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

เราขอแนะนำให้คุณกำหนดเวอร์ชั่นทุกครั้ง หากทำได้

ข้อจำกัด

  • คุณไม่สามารถเรียกใช้ API ที่ไม่ได้กำหนดเวอร์ชั่นไปยัง Facebook JavaScript SDK ได้

แอพของฉันสามารถเรียกใช้เวอร์ชั่นที่เก่ากว่าเวอร์ชั่นปัจจุบันได้หรือไม่

คุณสามารถกำหนดเวอร์ชั่นที่เก่ากว่าในการเรียกใช้ API ได้ ตราบใดที่เวอร์ชั่นนั้นๆ ยังใช้งานได้และแอพของคุณเคยเรียกใช้เวอร์ชั่นนั้น ตัวอย่างเช่น หากแอพของคุณสร้างขึ้นหลังจากเวอร์ชั่น 2.0 เปิดตัวไปแล้วและเรียกใช้โดยใช้เวอร์ชั่น 2.0 แอพจะสามารถเรียกใช้เวอร์ชั่น 2.0 ได้จนกว่าเวอร์ชั่นนี้จะหมดอายุ แม้ว่าจะมีการเปิดตัวเวอร์ชั่นใหม่ๆ แล้วก็ตาม หากคุณสร้างแอพหลังจากเวอร์ชั่น 2.0 แต่ไม่ได้เรียกใช้จนมีเวอร์ชั่น 2.2 แอพของคุณจะไม่สามารถเรียกใช้โดยใช้เวอร์ชั่น 2.0 หรือ 2.1 ได้ โดยแอพจะสามารถเรียกใช้โดยใช้ได้เพียงเวอร์ชั่น 2.2 และเวอร์ชั่นที่ใหม่กว่าเท่านั้น

การกำหนดเวอร์ชั่น API การตลาด

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

หากคุณใช้ Facebook SDK สำหรับ iOS, Android หรือ JavaScript การเรียกใช้การกำหนดเวอร์ชั่นมักจะเป็นไปโดยอัตโนมัติ โปรดทราบว่าลักษณะเช่นนี้ต่างจากระบบการกำหนดเวอร์ชั่นของแต่ละ SDK

JavaScript

JavaScript SDK จะใช้ API เวอร์ชั่นต่างๆ ได้ก็ต่อเมื่อคุณใช้เส้นทาง sdk.js

หากคุณใช้ FB.init() จาก JavaScript SDK คุณจะต้องใช้พารามิเตอร์เวอร์ชั่น ดังนี้:

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

หากคุณกำหนดแฟล็กเวอร์ชั่นใน init การเรียกใช้ FB.api() ใดๆ ก็ตามจะระบุเวอร์ชั่นไว้ที่ด้านหน้าของเส้นทางที่เรียกโดยอัตโนมัติ เช่นเดียวกับกล่องโต้ตอบการเข้าสู่ระบบด้วย Facebook ที่ถูกเรียก คุณจะได้รับกล่องโต้ตอบการเข้าสู่ระบบด้วย Facebook สำหรับ API เวอร์ชั่นนั้น

หากคุณจำเป็นต้องแก้ไขเวอร์ชั่น คุณสามารถทำได้โดยระบุเวอร์ชั่นไว้ที่ด้านหน้าของเส้นทางของปลายทางในการเรียกใช้ FB.api()

iOS

Facebook SDK สำหรับ iOS แต่ละเวอร์ชั่นที่เปิดตัวจะเชื่อมโยงกับเวอร์ชั่นที่มีให้ใช้งานในวันที่เปิดตัว หมายความว่าหากคุณอัพเกรดเป็น SDK ใหม่ ก็เท่ากับคุณอัพเกรดเป็น API เวอร์ชั่นล่าสุดด้วย (แม้ว่าคุณจะสามารถกำหนด API เวอร์ชั่นก่อนหน้าที่มีให้ใช้งานได้ด้วยตนเองโดยใช้ [FBSDKGraphRequest initWithGraphPath]) ซึ่งจะมีการแสดงเวอร์ชั่นของ API เมื่อเปิดตัว Facebook SDK สำหรับ iOS แต่ละเวอร์ชั่น

การเรียกใช้ API กราฟใดๆ ของคุณผ่าน Facebook SDK สำหรับ iOS จะมีเวอร์ชั่นระบุไว้ที่ด้านหน้า เช่นเดียวกับ JavaScript SDK ตัวอย่างเช่น หาก API เวอร์ชั่นล่าสุดคือ v2.7 การเรียกใช้ /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

Facebook SDK สำหรับ Android แต่ละเวอร์ชั่นที่เปิดตัวจะเชื่อมโยงกับเวอร์ชั่นที่มีให้ใช้งานในวันที่เปิดตัว ซึ่งหมายความว่าหากคุณอัพเกรดเป็น SDK ใหม่ ก็เท่ากับคุณอัพเกรดเป็น API เวอร์ชั่นล่าสุดด้วย (แม้ว่าคุณจะสามารถกำหนด API เวอร์ชั่นก่อนหน้าที่มีให้ใช้งานได้ด้วยตนเองโดยใช้ GraphRequest.setVersion()) ซึ่งจะมีการแสดงเวอร์ชั่นของ API เมื่อเปิดตัว Facebook SDK สำหรับ Android แต่ละเวอร์ชั่น

การเรียกใช้ API กราฟใดๆ ของคุณผ่าน Facebook SDK สำหรับ Android จะมีเวอร์ชั่นระบุไว้ที่ด้านหน้า เช่นเดียวกับ JavaScript SDK ตัวอย่างเช่น หาก API เวอร์ชั่นล่าสุดคือ v2.7 การเรียกใช้ /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()