เนื่องจากผู้ใช้ระบบนั้นแสดงถึงการเรียกใช้เซิร์ฟเวอร์ ผู้ใช้ระบบจึงไม่มีการเข้าสู่ระบบด้วย 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 เพื่อสร้างโทเค็นการเข้าถึงผู้ใช้ระบบแบบหมดอายุ โดยจะระบุหรือไม่ก็ได้ขอบเขตที่รองรับสำหรับผู้ใช้ระบบ
ads_management
ads_read
attribution_read
business_management
catalog_management
commerce_account_manage_orders
commerce_account_read_orders
commerce_account_read_settings
instagram_basic
instagram_branded_content_ads_brand
instagram_branded_content_brand
instagram_content_publish
instagram_manage_comments
instagram_manage_insights
instagram_manage_messages
instagram_shopping_tag_products
leads_retrieval
page_events
pages_manage_ads
pages_manage_cta
pages_manage_engagement
pages_manage_instant_articles
pages_manage_metadata
pages_manage_posts
pages_messaging
pages_read_engagement
pages_read_user_content
pages_show_list
private_computation_access
publish_video
read_audience_network_insights
read_insights
read_page_mailboxes
whatsapp_business_management
whatsapp_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,manage_pages" \ -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,manage_pages" \ -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 การรีเฟรช SUAT API การรีเฟรช SUAT จะส่งคืนโทเค็นการเข้าถึงผู้ใช้ระบบใหม่ และโทเค็นใหม่นี้จะใช้งานได้ 60 วันนับจากวันที่รีเฟรช ส่วนโทเค็นเก่าจะยังคงใช้งานได้อยู่จนกว่าจะหมดอายุ (วันที่สร้าง + 60 วัน)
นำโทเค็นการเข้าถึงผู้ใช้ระบบใหม่เข้ามาใช้
เพิกถอนโทเค็นการเข้าถึงผู้ใช้ระบบเก่าผ่าน API การเพิกถอน SUAT ระบบจะยกเลิกโทเค็นดังกล่าวให้ใช้งานไม่ได้ในทันที และคุณจะไม่สามารถใช้โทเค็นนั้นๆ ได้อีกหลังจากที่เพิกถอน