เนื่องจากผู้ใช้ระบบนั้นแสดงถึงการเรียกใช้เซิร์ฟเวอร์ ผู้ใช้ระบบจึงไม่มีการเข้าสู่ระบบด้วย Facebook และไม่สามารถติดตั้งแอพหรือดำเนินขั้นตอน oAuth ของ Facebook แบบมาตรฐานในการสร้างโทเค็นได้ คุณจะต้องดำเนินการผ่านการเรียกใช้ API
| ประเภท | โทเค็นการเข้าถึงแบบไม่หมดอายุ | โทเค็นการเข้าถึงแบบหมดอายุที่แนะนำ |
|---|---|---|
อายุการใช้งาน | ไม่มีวันหมดอายุ | ใช้ได้ 60 วัน |
จำเป็นต้องรีเฟรชหรือไม่ | ไม่ | จำเป็น |
คำแนะนำโดยอิงตามกรณีการใช้งาน | คุณสามารถแบกรับความเสี่ยงที่โทเค็นการเข้าถึงจะรั่วไหลได้ และต้องการให้แอพพลิเคชั่นจากภายนอกมีสิทธิ์การเข้าถึงข้อมูลแบบออฟไลน์ | คุณต้องการจำกัดความเสี่ยงที่โทเค็นการเข้าถึงจะรั่วไหล |
ผู้ใช้ระบบหรือผู้ใช้ระบบที่เป็นผู้ดูแลจะต้องติดตั้งแอพที่จะใช้เพื่อสร้างโทเค็นการเข้าถึง ซึ่งจะทำให้แอพสามารถเรียกใช้ API ในนามของผู้ใช้ระบบหรือผู้ใช้ระบบที่เป็นผู้ดูแลรายนี้ได้
ทั้งผู้ใช้ระบบและแอพควรเป็นของตัวจัดการธุรกิจเดียวกัน คุณสามารถติดตั้งได้เฉพาะแอพที่มีสิทธิ์การเข้าถึงแบบมาตรฐานขึ้นไปสำหรับ API การจัดการโฆษณาเท่านั้น
หากต้องการติดตั้งแอพสำหรับผู้ใช้ระบบ คุณจำเป็นต้องมีสิ่งต่อไปนี้
access_token: ของผู้ใช้ที่เป็นผู้ดูแล ผู้ใช้ระบบที่เป็นผู้ดูแล หรือผู้ใช้ระบบรายอื่นbusiness_app: ID จากแอพที่กำลังติดตั้งหากต้องการติดตั้งแอพพลิเคชั่นสำหรับผู้ใช้ระบบ ให้ส่งคำขอ POST ดังนี้
curl \ -F "business_app=APP-ID" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/applications"
การเรียกใช้นี้จะส่งคืนผลลัพธ์แบบบูลีนหากติดตั้งสำเร็จ หากไม่เป็นไปตามข้อจำกัดใดๆ คุณจะเห็นข้อความแสดงความผิดพลาดสำหรับสถานการณ์นั้นๆ
หลังจากผู้ใช้ระบบติดตั้งแอพแล้ว ก็จะสามารถสร้างโทเค็นการเข้าถึงแบบถาวรได้ แต่ก็ยังมีข้อจำกัดบางประการดังนี้
ต่อไปนี้คือพารามิเตอร์สำหรับการเรียกใช้ API
business_app: แอพที่เป็นของตัวจัดการธุรกิจที่มีผู้ใช้ระบบอยู่appsecret_proof: ช่องที่คำนวณสำหรับแอพ คุณจำเป็นต้องระบุพารามิเตอร์นี้ เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ที่เรียกใช้ API เป็นเซิร์ฟเวอร์ที่เหมาะสม โปรดดูรายละเอียดเพิ่มเติมที่การรักษาความปลอดภัยในการเข้าสู่ระบบscope: สตริงที่คั่นด้วยเครื่องหมายจุลภาค ซึ่งมีสิทธิ์การอนุญาตแบบขยายอยู่access_token: โทเค็นที่เป็นของผู้ดูแล ผู้ใช้ระบบที่เป็นผู้ดูแล หรือผู้ใช้ระบบทั่วไปในตัวจัดการธุรกิจset_token_expires_in_60_days: ตั้งค่าเป็น true เพื่อสร้างโทเค็นการเข้าถึงผู้ใช้ระบบแบบหมดอายุ แนะนำ โทเค็นแบบหมดอายุเป็นหลักปฏิบัติที่ดีที่สุดในการรักษาความปลอดภัย ธุรกิจบางรายต้องใช้โทเค็นแบบหมดอายุ หากข้อกำหนดนี้มีผลกับธุรกิจของคุณ การละเว้นพารามิเตอร์นี้หรือตั้งค่าเป็น false จะส่งผลให้เกิดข้อผิดพลาด การผสานการทำงานทั้งหมดควรใช้โทเค็นแบบหมดอายุเพื่อให้สอดคล้องกับมาตรฐานการรักษาความปลอดภัยของแพลตฟอร์มที่พัฒนาอยู่เสมอขอบเขตที่รองรับสำหรับผู้ใช้ระบบ
ads_managementads_readattribution_readbusiness_managementcatalog_managementcommerce_account_manage_orderscommerce_account_read_orderscommerce_account_read_settingsinstagram_basicinstagram_branded_content_ads_brandinstagram_branded_content_brandinstagram_content_publishinstagram_manage_commentsinstagram_manage_insightsinstagram_manage_messagesinstagram_shopping_tag_productsleads_retrievalpage_eventspages_manage_adspages_manage_ctapages_manage_engagementpages_manage_instant_articlespages_manage_metadatapages_manage_postspages_messagingpages_read_engagementpages_read_user_contentpages_show_listprivate_computation_accesspublish_videoread_audience_network_insightsread_insightsread_page_mailboxeswhatsapp_business_managementwhatsapp_business_messagingสิทธิ์การอนุญาตที่เลิกใช้แล้ว โดยจะมีเพียงแอพที่สร้างขึ้นก่อนวันที่ 24 เมษายน 2018 เท่านั้นที่มองเห็น
publish_actions
สิทธิ์การอนุญาตที่ได้รับการควบคุมตามความสามารถ
| ความสามารถ | สิทธิ์การอนุญาต |
|---|---|
business_creative_asset_management |
|
commerce_public_api_beta_testing |
|
หากต้องการสร้าง appsecret_proof คุณสามารถใช้โค้ด PHP ได้ ดังนี้
$appsecret_proof = hash_hmac( 'sha256', $access_token_used_in_the_call, $app_secret_for_the_app_used_in_the_call, );
ในโค้ดตัวอย่างข้างต้น app_secret_for_the_app_used_in_the_call คือข้อมูลลับของแอพสำหรับแอพที่ใช้สร้างโทเค็นการเข้าถึง คุณสามารถดูข้อมูลลับของแอพได้ในแดชบอร์ดของแอพ
appsecret_proof ที่ได้รับการแฮชควรเป็นสตริงอย่าง "1734d0d1e1ca62c9762c10bbc7321fdf89ecc7d819312b2f3"
หากต้องการสร้างโทเค็นการเข้าถึงผู้ใช้ระบบแบบถาวร ให้ส่งคำขอ POST ดังนี้
curl \ -F "business_app=<APP_ID>" \ -F "scope=ads_management,pages_read_engagement,pages_show_list" \ -F "appsecret_proof=APPSECRET-PROOF" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/access_tokens"
หากต้องการสร้างโทเค็นการเข้าถึงผู้ใช้ระบบแบบหมดอายุ ให้ส่งคำขอ POST ดังนี้
curl \ -F "business_app=<APP_ID>" \ -F "scope=ads_management,pages_read_engagement,pages_show_list" \ -F "set_token_expires_in_60_days=true" \ -F "appsecret_proof=APPSECRET-PROOF" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/access_tokens"
ตำแหน่งข้อมูลนี้เคยใช้ชื่อว่า /SYSTEM-USER-ID/ads_access_token การเรียกใช้ไปยังชื่อดังกล่าวจะไม่ได้ผลอีกต่อไป
การตอบกลับจะส่งคืนสตริงโทเค็นการเข้าถึง หากไม่เป็นไปตามข้อจำกัดใดๆ ระบบจะแสดงข้อความแสดงความผิดพลาดสำหรับสถานการณ์นั้นๆ การตอบกลับ:
{
"access_token": "CAAB3rQQzTFABANaYYCmOuLhbC]Fu8cAnmkcvT0ZBIDNm1d1fSp4Eg4XA79gmYumZCoSuiMSUILUjzG3y15BJlrYwXdqwd5c7y3lOUzu6aT7MkXL6HpISksSuLP4aFKWPmwb6iOgGeugRSn766xMZCN72vTiGGLUNqC2MKRL"
}นอกจากนี้ คุณยังสามารถสร้างโทเค็นการเข้าถึงผู้ใช้ระบบโดยใช้ UI ตัวจัดการธุรกิจได้อีกด้วย
โทเค็นผู้ใช้ระบบแบบหมดอายุจะใช้ได้ 60 วันนับจากวันที่สร้างหรือรีเฟรช หากต้องการให้เกิดความต่อเนื่อง ผู้พัฒนาควรรีเฟรชโทเค็นการเข้าถึงภายใน 60 วัน ซึ่งหากไม่ทำ ก็จะส่งผลให้สูญเสียโทเค็นการเข้าถึง และผู้พัฒนาจะต้องมีโทเค็นใหม่จึงจะมีสิทธิ์การเข้าถึง API อีกครั้ง
หากต้องการรีเฟรชโทเค็นการเข้าถึงผู้ใช้ระบบแบบหมดอายุ คุณจำเป็นต้องมีสิ่งต่อไปนี้
fb_exchange_token: โทเค็นการเข้าถึงผู้ใช้ระบบที่ถูกต้องclient_id: ID แอพclient_secret: ข้อมูลลับของแอพset_token_expires_in_60_days: ตั้งค่าเป็น true เพื่อรีเฟรชโทเค็นการเข้าถึงผู้ใช้ระบบแบบหมดอายุสืบค้นตำแหน่งข้อมูล GET oauth/access_token
ตัวอย่างคำขอ
curl -i -X GET
"https://graph.facebook.com/{graph-api-version}/oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
set_token_expires_in_60_days=true&
fb_exchange_token={your-access-token}"ตัวอย่างการตอบกลับ
{
"access_token":"{expiring-system-user-access-token}",
"token_type": "bearer",
"expires_in": 5183944 // Time left in seconds until the token expires
}ตำแหน่งข้อมูลนี้มีไว้เพื่อใช้หมุนเวียนโทเค็นตามปกติหรือเพิกถอนโทเค็นการเข้าถึงสำหรับผู้ใช้ระบบที่ถูกบุกรุก โดยเป็นวิธีหนึ่งในการปกป้องระบบของคุณ
หากต้องการเพิกถอนโทเค็นการเข้าถึงผู้ใช้ระบบ คุณจำเป็นต้องมีสิ่งต่อไปนี้
revoke_token: โทเค็นการเข้าถึงที่จะเพิกถอน
client_id: ID แอพ
client_secret: ข้อมูลลับของแอพ
access_token: โทเค็นการเข้าถึงในการระบุผู้เรียกใช้
ข้อกำหนดมีดังต่อไปนี้
client_id จะต้องสอดคล้องกับแอพจริง และรับรองว่าแอพไม่ถูกจำกัดผลลัพธ์ ปิดใช้งาน หรือลบ
client_id รวมถึงแอพที่ติดตั้ง revoke_token, แอพที่ติดตั้ง access_token และ client_secret จะต้องตรงกันทั้งหมด
สืบค้นตำแหน่งข้อมูล GET oauth/revoke
ตัวอย่างคำขอ
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/revoke?
client_id={app-id}&
client_secret={app-secret}&
revoke_token={system-user-access-token-to-revoke}&
access_token={your-access-token}"ตัวอย่างการตอบกลับ
{
"success":"true",
}การหมุนเวียนโทเค็นเป็นมาตรการรักษาความปลอดภัยอย่างหนึ่ง ซึ่งช่วยบรรเทาความเสี่ยงได้ เช่น การจำกัดความเสียหายเมื่อโทเค็นรั่วไหล การเปลี่ยนโทเค็นการเข้าถึงเป็นประจำช่วยจำกัดความเสียหายที่อาจเกิดขึ้นจากการที่โทเค็นรั่วไหลหรือวางผิดตำแหน่งได้พอๆ กับการเปลี่ยนรหัสผ่าน ในปัจจุบัน ระบบของเรารองรับการหมุนเวียนผู้ใช้ระบบโดยไม่ต้องหยุดทำงาน ซึ่งทำได้โดยทำตามคำแนะนำเหล่านี้
รีเฟรชโทเค็นการเข้าถึงผู้ใช้ระบบผ่าน API การรีเฟรช ซึ่งจะส่งคืนโทเค็นการเข้าถึงผู้ใช้ระบบใหม่ที่จะใช้งานได้ 60 วันนับจากวันที่รีเฟรช ส่วนโทเค็นการเข้าถึงเก่าจะยังคงใช้งานได้อยู่จนกว่าจะหมดอายุ (กล่าวคือ 60 วันนับจากวันที่สร้าง)
นำโทเค็นการเข้าถึงผู้ใช้ระบบมาใช้
เพิกถอนโทเค็นการเข้าถึงผู้ใช้ระบบเก่าผ่าน API การเพิกถอน ระบบจะยกเลิกโทเค็นดังกล่าวให้ใช้งานไม่ได้ในทันที และคุณจะไม่สามารถใช้โทเค็นนั้นๆ ได้อีกหลังจากที่เพิกถอน