โทเค็นการเข้าถึง

เมื่อผู้ใช้เชื่อมต่อกับแอพโดยใช้การเข้าสู่ระบบด้วย Facebook แอพจะสามารถรับโทเค็นการเข้าถึงที่ให้คุณเข้าถึง Facebook API ชั่วคราวได้อย่างปลอดภัย

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

ประเภทของโทเค็นการเข้าถึง คำอธิบาย

โทเค็นการเข้าถึงของผู้ใช้

โทเค็นของผู้ใช้เป็นประเภทที่ใช้กันมากที่สุด โทเค็นการเข้าถึงประเภทนี้จำเป็นต้องมีเมื่อแอพเรียก API เพื่ออ่าน แก้ไข หรือเขียนข้อมูลบางอย่างของผู้ใช้บน Facebook แทนผู้ใช้รายนั้น โทเค็นการเข้าถึงของผู้ใช้นั้นมักจะได้รับผ่านกล่องการเข้าสู่ระบบ และกำหนดให้ผู้ใช้ต้องอนุญาตให้แอพของคุณรับโทเค็นนั้น

โทเค็นการเข้าถึงของแอพ

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

โทเค็นการเข้าถึงของเพจ

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

โทเค็นของไคลเอ็นต์

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

การสร้างโทเค็นการเข้าถึง

- โทเค็นการเข้าถึงของผู้ใช้

- โทเค็นการเข้าถึงของแอพ

- โทเค็นการเข้าถึงของเพจ


โทเค็นการเข้าถึงของผู้ใช้

แม้แต่ละแพลตฟอร์มจะสร้างโทเค็นการเข้าถึงผ่าน API ที่ต่างกัน แต่ทุกแพลตฟอร์มต้องปฏิบัติตามกลยุทธ์พื้นฐานในการรับโทเค็นผู้ใช้ ดังนี้

แพลตฟอร์มที่ต่างกันมีหลักในการเริ่มกระบวนการนี้ต่างกัน และมีฟังก์ชั่นในการจัดการโทเค็นการเข้าถึงแทนผู้พัฒนาและผู้ใช้ที่ให้สิทธิ์การอนุญาตดังนี้

Javascript

Facebook SDK สำหรับ JavaScript ได้รับและใช้โทเค็นการเข้าถึงของผู้ใช้อยู่เสมอโดยอัตโนมัติในคุกกี้ของเบราว์เซอร์ คุณสามารถดึงโทเค็นการเข้าถึงของผู้ใช้ได้โดยเรียก FB.getAuthResponse ซึ่งจะรวมคุณสมบัติ accessToken ภายในการตอบสนอง

Android

Facebook SDK สำหรับ Android จะจัดการโทเค็นการเข้าถึงของผู้ใช้โดยอัตโนมัติผ่านคลาส com.facebook.AccessToken คุณสามารถดูข้อมูลเพิ่มเติมในการรับโทเค็นการเข้าถึงของผู้ใช้ได้โดยใช้การเข้าสู่ระบบด้วย Facebook สำหรับ Android คุณสามารถดึงโทเค็นการเข้าถึงของผู้ใช้ได้โดยตรวจสอบ Session.getCurrentAccessToken

iOS

Facebook SDK สำหรับ iOS จะจัดการโทเค็นการเข้าถึงของผู้ใช้โดยอัตโนมัติผ่านคลาส FBSDKAccessToken คุณสามารถดูข้อมูลเพิ่มเติมในการรับโทเค็นการเข้าถึงของผู้ใช้ได้โดยใช้การเข้าสู่ระบบด้วย Facebook สำหรับ iOS คุณสามารถดึงโทเค็นการเข้าถึงได้โดยตรวจสอบ FBSDKAccessToken.currentAccessToken

เว็บ (ไม่ใช้ JavaScript)

เมื่อสร้างแอพเว็บโดย ไม่มี Facebook SDK สำหรับ JavaScript คุณสามารถสร้างโทเค็นการเข้าถึงในระหว่างขั้นตอนที่ระบุในเอกสารนั้นได้

ตัวอย่างโค้ด

Android

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    accessToken = AccessToken.getCurrentAccessToken();
}

iOS

- (void)viewDidLoad
{
  [super viewDidLoad];
  NSString *accessToken = [FBSDKAccessToken currentAccessToken];
}

JavaScript (เว็บ)

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  } 
} );

โทเค็นระยะสั้นและโทเค็นระยะยาว

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

โทเค็นที่สร้างผ่านการเข้าสู่ระบบบนเว็บนั้นเป็นโทเค็นระยะสั้น แต่คุณสามารถแปลงให้เป็นโทเค็นระยะยาวได้ โดยเรียก API ฝั่งเซิร์ฟเวอร์พร้อมกับข้อมูลลับของแอพ

แอพบนมือถือที่ใช้ Facebook SDK สำหรับ iOS และโดยค่าเริ่มต้น Facebook SDK สำหรับ Android จะได้รับโทเค็นระยะยาว

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

โทเค็นสามารถเคลื่อนย้ายได้

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

การย้ายโทเค็นระหว่างไคลเอ็นต์และเซิร์ฟเวอร์จะต้องดำเนินการอย่างปลอดภัยผ่าน HTTPS เพื่อความปลอดภัยของบัญชีผู้ใช้ โปรดอ่านข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการย้ายโทเค็นระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ของคุณ

โทเค็นการเข้าถึงของแอพ

โทเค็นการเข้าถึงของแอพนั้นใช้เพื่อสร้างคำขอไปยัง API ของ Facebook ในนามของแอพ ไม่ใช่ในนามของผู้ใช้ ซึ่งสามารถใช้แก้ไขพารามิเตอร์ของแอพ สร้าง และจัดการผู้ใช้ขั้นทดสอบ หรืออ่านข้อมูลเชิงลึกของแอพได้

ข้อจำกัด

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

โทเค็นการเข้าถึงของแอพนั้นถือว่าไม่ปลอดภัยหากแอพของคุณตั้งไว้เป็น Native/Desktop ในการตั้งค่าขั้นสูงของ แดชบอร์ดของแอพ และจะไม่สามารถใช้งานในการเรียก API ได้ เนื่องจากเราสันนิษฐานว่าแอพรูปแบบเดิมหรือแอพบนเดสก์ท็อปจะมีข้อมูลลับของแอพฝังอยู่ที่ใดสักแห่งหนึ่ง (จึงทำให้โทเค็นการเข้าถึงของแอพที่สร้างโดยใช้ข้อมูลลับนั้นไม่มีความปลอดภัย)

การสร้างโทเค็นการเข้าถึงของแอพ

คุณต้องทำการเรียก API กราฟ จึงจะสร้างโทเค็นการเข้าถึงของแอพได้

GET /oauth/access_token
    ?client_id={app-id}
    &client_secret={app-secret}
    &grant_type=client_credentials

การเรียกนี้จะส่งคืนโทเค็นการเข้าถึงของแอพ ซึ่งนำไปใช้แทนโทเค็นการเข้าถึงของผู้ใช้เพื่อทำการเรียก API ดังที่ระบุข้างต้น ขอย้ำอีกครั้งว่า เพื่อความปลอดภัย คุณไม่ควรเข้ารหัสโทเค็นการเข้าถึงของแอพในรหัสฝั่งไคลเอ็นต์แบบตายตัว เพราะจะทำให้ทุกคนที่โหลดเว็บเพจของคุณ หรือทำการแยกส่วนแอพของคุณสามารถเข้าถึงข้อมูลลับของแอพได้อย่างเต็มที่ และแก้ไขแอพของคุณได้ ซึ่งบ่งบอกเป็นนัยว่าคุณจะใช้โทเค็นการเข้าถึงของแอพเฉพาะในการเรียกระหว่างเซิร์ฟเวอร์เป็นส่วนใหญ่

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

มีอีกวิธีหนึ่งในการเรียกไปยัง API กราฟที่ไม่ต้องใช้โทเค็นการเข้าถึงของแอพที่สร้างขึ้น คุณแค่เพียงส่งผ่าน ID ของแอพและข้อมูลลับของแอพเป็นพารามิเตอร์ access_token ขณะทำการเรียก

https://graph.facebook.com/endpoint?key=value&access_token=app_id|app_secret

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

โทเค็นการเข้าถึงของเพจ

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

GET /me/accounts HTTP/1.1
Host: graph.facebook.com

ซึ่งจะส่งคืนรายการเพจที่ผู้ใช้ดูแลพร้อมข้อมูลอื่นๆ เกี่ยวกับเพจ เช่น หมวดหมู่เพจ สิทธิ์การอนุญาตที่ผู้ดูแลมีในเพจนั้น และโทเค็นการเข้าถึงของเพจ ดังนี้

{
  "data": [
    {
      "category": "Product/service",
      "name": "Sample Page",
      "access_token": "{access-token}",
      "id": "1234567890",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }, 
}

คุณสามารถใช้โทเค็นการเข้าถึงเพจในการเรียก API ในนามของเพจ เช่น คุณสามารถโพสต์การอัพเดตสถานะในเพจ (แทนที่จะโพสต์ในไทม์ไลน์ของผู้ใช้) หรืออ่านข้อมูลเชิงลึกของเพจ

โทเค็นการเข้าถึงของเพจจะไม่ซ้ำกันในแต่ละเพจ ผู้ดูแลระบบแต่ละคน และแอพแต่ละแอพ

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