โทเค็นการเข้าถึงสำหรับเทคโนโลยีในเครือ Meta

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Android

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

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

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

iOS

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

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

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

JavaScript

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

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

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

โปรดดูตัวอย่างโค้ดที่สมบูรณ์ในเอกสารเกี่ยวกับ Facebook Web SDK

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

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

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

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

ข้อจำกัด

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

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

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

หากต้องการสร้างโทเค็นการเข้าถึงแอพ คุณต้องมี:

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

curl -X GET "https://graph.facebook.com/oauth/access_token
  ?client_id={your-app-id}
  &client_secret={your-app-secret}
  &grant_type=client_credentials"

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

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

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

curl -i -X GET "https://graph.facebook.com/{api-endpoint}&access_token={your-app_id}|{your-app_secret}"   

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

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

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

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

curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}" 

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

{
  "data": [
    {
      "access_token": "EAACEdE...",
      "category": "Brand",
      "category_list": [
        {
          "id": "1605186416478696",
          "name": "Brand"
        }
      ],
      "name": "Ash Cat Page",
      "id": "1353269864728879",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
    {
      "access_token": "EAACEdE...",
      "category": "Pet Groomer",
      "category_list": [
        {
          "id": "163003840417682",
          "name": "Pet Groomer"
        },
        {
          "id": "2632",
          "name": "Pet"
        }
      ],
      "name": "Unofficial: Tigger the Cat",
      "id": "1755847768034402",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    }
  ]
}

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

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

โทเค็นการเข้าถึงไคลเอ็นต์

สำหรับ iOS และ Android ที่มี SDK ตั้งแต่ v13.0 ขึ้นไป ซึ่งจะเผยแพร่ในช่วงต้นปี 2022 คุณจะต้องใช้โทเค็นของไคลเอ็นต์ในการเรียกใช้ API กราฟทุกครั้ง

โทเค็นของไคลเอ็นต์นั้นเหมือนกับโทเค็นของแอพตรงที่โทเค็นนี้จะส่งคำขอ API กราฟในนามของแอพแทนที่จะเป็นผู้ใช้

โทเค็นการเข้าถึงไคลเอ็นต์ไม่สามารถใช้ในคำขอเพียงโดดๆ ได้ โดยต้องใช้ร่วมกับ ID ของแอพที่คุณมี ซึ่งแตกต่างจากโทเค็นอื่นๆ หากต้องการดำเนินการดังกล่าว โปรดใส่โทเค็นของคุณไว้ท้าย ID ของแอพ โดยคั่นด้วยสัญลักษณ์ขีดตั้ง (|) ดังนี้:

{app-id}|{client-token}

ตัวอย่างเช่น:

access_token=1234|5678

หากต้องการโทเค็นการเข้าถึงไคลเอ็นต์สำหรับแอพ ให้ดำเนินการดังต่อไปนี้

  1. ลงชื่อเข้าใช้บัญชีผู้พัฒนาของคุณ
  2. ในหน้าแอพ ให้เลือกแอพเพื่อเปิดแดชบอร์ดสำหรับแอพนั้นๆ
  3. บนแดชบอร์ด ให้ไปที่การตั้งค่า > ขั้นสูง > การรักษาความปลอดภัย > โทเค็นของไคลเอ็นต์

ความยาวของโทเค็นการเข้าถึง

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

เรียนรู้เพิ่มเติม