โทเค็นการเข้าถึงเป็นสตริงทึบที่ระบุผู้ใช้ แอพ หรือเพจ โดยแอพสามารถใช้โทเค็นการเข้าถึงเรียกใช้ 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 เพื่อความปลอดภัยของบัญชีผู้ใช้ โปรดอ่านเพิ่มเติมเกี่ยวกับผลกระทบจากการย้ายโทเค็นระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ของคุณ
แพลตฟอร์มที่ต่างกันมีหลักในการเริ่มกระบวนการนี้ต่างกัน และมีฟังก์ชั่นในการจัดการโทเค็นการเข้าถึงแทนผู้พัฒนาและผู้ใช้ที่ให้สิทธิ์การอนุญาตดังนี้
Facebook SDK สำหรับ Android จะจัดการโทเค็นการเข้าถึงผู้ใช้โดยอัตโนมัติผ่านคลาส com.facebook.AccessToken
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการรับโทเค็นการเข้าถึงผู้ใช้โดยใช้การเข้าสู่ระบบด้วย Facebook สำหรับ Android ซึ่งคุณสามารถดึงข้อมูลของโทเค็นการเข้าถึงผู้ใช้ได้โดยตรวจสอบ Session.getCurrentAccessToken
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); accessToken = AccessToken.getCurrentAccessToken(); }
Facebook SDK สำหรับ iOS จะจัดการโทเค็นการเข้าถึงผู้ใช้โดยอัตโนมัติผ่านคลาส FBSDKAccessToken
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการรับโทเค็นการเข้าถึงผู้ใช้โดยใช้การเข้าสู่ระบบด้วย Facebook สำหรับ iOS ซึ่งคุณสามารถดึงข้อมูลของโทเค็นการเข้าถึงได้โดยตรวจสอบ FBSDKAccessToken.currentAccessToken
- (void)viewDidLoad { [super viewDidLoad]; NSString *accessToken = [FBSDKAccessToken currentAccessToken]; }
Facebook SDK for JavaScript ได้รับและจะจัดเก็บโทเค็นการเข้าถึงผู้ใช้โดยอัตโนมัติในคุกกี้ของเบราว์เซอร์ คุณสามารถดึงข้อมูลของโทเค็นการเข้าถึงผู้ใช้ได้โดยเรียกใช้ไปยัง FB.getAuthResponse
ซึ่งจะรวมคุณสมบัติ accessToken
ไว้ภายในการตอบกลับ
FB.getLoginStatus(function(response) { if (response.status === 'connected') { var accessToken = response.authResponse.accessToken; } } );
โปรดดูตัวอย่างโค้ดที่สมบูรณ์ในเอกสารเกี่ยวกับ Facebook Web SDK
เมื่อสร้างแอพบนเว็บโดยไม่มี 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
หากต้องการโทเค็นการเข้าถึงไคลเอ็นต์สำหรับแอพ ให้ดำเนินการดังต่อไปนี้
โปรดทราบว่าความยาวของโทเค็นการเข้าถึงทุกประเภทจะเปลี่ยนไปเมื่อเวลาผ่านไป เนื่องจาก Facebook เปลี่ยนแปลงสิ่งที่จัดเก็บในโทเค็นการเข้าถึง รวมถึงวิธีการเข้ารหัสข้อมูลดังกล่าว คุณสามารถคาดหวังได้ว่าโทเค็นการเข้าถึงจะเติบโตและหดตัวเมื่อเวลาผ่านไป โปรดใช้ประเภทข้อมูลที่มีความยาวผันแปรได้โดยไม่มีขนาดสูงสุดที่เจาะจงเพื่อจัดเก็บโทเค็นการเข้าถึง
ใช้เครื่องมือสร้างโทเค็นการเข้าถึงเพื่อดูรายการโทเค็นการเข้าถึงของคุณและข้อมูลการแก้ไขจุดบกพร่องสำหรับแต่ละโทเค็น