โทเค็นการเข้าถึงแบบใช้งานระยะยาว

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

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

เวอร์ชั่นล่าสุดของ API กราฟ: v21.0

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

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

คุณจำเป็นต้องมีสิ่งต่อไปนี้

  • โทเค็นการเข้าถึงผู้ใช้ที่ถูกต้อง
  • ID ของแอพ
  • ข้อมูลลับของแอพ

สืบค้นตำแหน่งข้อมูล 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}&
    fb_exchange_token={your-access-token}" 

ตัวอย่างการตอบกลับ

{
  "access_token":"{long-lived-user-access-token}",
  "token_type": "bearer",
  "expires_in": 5183944            //The number of seconds until the token expires
}

ขั้นตอนการทำงานในการสร้างโทเค็นการเข้าถึงผู้ใช้แบบใช้งานระยะยาวมีดังนี้

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

คำเตือน

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

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

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

รับโทเค็นการเข้าถึงเพจแบบใช้งานระยะยาว

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

คุณจำเป็นต้องมีสิ่งต่อไปนี้

สืบค้นตำแหน่งข้อมูล GET {app-scoped-user-id}?accounts

curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts?
  access_token={long-lived-user-access-token}"

ตัวอย่างการตอบกลับ

{
  "data":[
    {
      "access_token":"{long-lived-page-access-token}",
      "category":"Brand",
      "category_list":[
        {
          "id":"1605186416478696",
          "name":"Brand"
        }
      ],
      "name":"Cute Kitten Page",
      "id":"{page-id}",
      "tasks":[
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    }
  ],
  "paging":{
    "cursors":{
      "before":"MTM1MzI2OTg2NDcyODg3OQZDZD",
      "after":"MTM1MzI2OTg2NDcyODg3OQZDZD"
    }
  }
}

รับโทเค็นแบบใช้งานระยะยาวสำหรับไคลเอ็นต์

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

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

คุณรับโทเค็นแบบใช้งานระยะยาวสำหรับไคลเอ็นต์ในระดับสูงโดยวิธีนี้:

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

รับรหัส

สืบค้นตำแหน่งข้อมูล GET oauth/client_code URI การเปลี่ยนเส้นทางจะต้องเป็นค่าที่แน่นอนซึ่งคุณได้กำหนดไว้ในแดชบอร์ดของแอพใต้การ์ดการเข้าสู่ระบบด้วย Facebook > ไคลเอ็นต์การตั้งค่า > การตั้งค่า OAuth

curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code?             
    client_id={app-id}&
    client_secret={app-secret}&
    redirect_uri={app-redirect-uri}&
    access_token={long-lived-user-access-token}" 

ตัวอย่างการตอบกลับ

{
  "code":"{code-for-your-client}"
}

แลกรับรหัสสำหรับโทเค็นการเข้าถึงแบบใช้งานระยะยาว

หลังจากดึงรหัสมาจากเซิร์ฟเวอร์ของ Facebook แล้ว คุณต้องส่งรหัสไปยังไคลเอ็นต์ผ่านช่องทางที่ปลอดภัย เมื่อดำเนินการดังกล่าวเสร็จสิ้นแล้ว คุณจำเป็นต้องส่งคำขอจากไคลเอ็นต์ไปยังตำแหน่งข้อมูล /oauth/access_token

curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token?   
    code={code-for-your-client}&
    client_id={app-id}&
    redirect_uri={app-redirect-uri}&
    machine_id= {your-client-machine-id}"

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

ตัวอย่างการตอบกลับ

{
  "access_token":"{long-lived-access-token}", 
  "expires_in":5183944,           //The number of seconds until the token expires
  "machine_id":"{your-client-machine-id}"
}

ขั้นตอนการทำงานในการสร้างโทเค็นแบบใช้งานระยะยาวมีดังนี้