ติดตั้งแอพ สร้าง รีเฟรช และเพิกถอนโทเค็น

เนื่องจากผู้ใช้ระบบนั้นแสดงถึงการเรียกใช้เซิร์ฟเวอร์ ผู้ใช้ระบบจึงไม่มีการเข้าสู่ระบบด้วย 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 เพื่อสร้างโทเค็นนี้จะต้องเป็นของตัวจัดการธุรกิจเดียวกัน
  • โดยแอพจะเป็นของตัวจัดการธุรกิจเดียวกันหรือไม่ก็ได้ แต่หากไม่ได้เป็นของตัวจัดการธุรกิจเดียวกัน ก็จะมีข้อจำกัดบางประการอยู่ โปรดดูที่ส่วนด้านล่าง

ต่อไปนี้คือพารามิเตอร์สำหรับการเรียกใช้ API

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

ขอบเขตที่รองรับสำหรับผู้ใช้ระบบ

  • ads_management
  • ads_read
  • business_management
  • catalog_management
  • instagram_basic
  • instagram_content_publish
  • instagram_manage_comments
  • instagram_manage_insights
  • instagram_manage_messages
  • leads_retrieval
  • manage_notifications
  • pages_manage_cta
  • pages_read_engagement
  • pages_manage_ads
  • pages_manage_engagement
  • pages_manage_posts
  • pages_messaging
  • pages_show_list
  • pages_read_user_content
  • pages_manage_metadata
  • page_events
  • publish_video
  • read_audience_network_insights
  • read_insights
  • read_page_mailboxes
  • rsvp_event
  • whatsapp_business_management
  • whatsapp_business_messaging

หากต้องการสร้าง 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",
}

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

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

  1. รีเฟรชโทเค็นการเข้าถึงผู้ใช้ระบบผ่าน API การรีเฟรช SUAT API การรีเฟรช SUAT จะส่งคืนโทเค็นการเข้าถึงผู้ใช้ระบบใหม่ และโทเค็นใหม่นี้จะใช้งานได้ 60 วันนับจากวันที่รีเฟรช ส่วนโทเค็นเก่าจะยังคงใช้งานได้อยู่จนกว่าจะหมดอายุ (วันที่สร้าง + 60 วัน)

  2. นำโทเค็นการเข้าถึงผู้ใช้ระบบใหม่เข้ามาใช้

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