Facebook: หลักการเขียน App เบื้องต้น

Post Reply
tong
Site Admin
Posts: 2387
Joined: Fri 01 May 2009 8:55 pm

Facebook: หลักการเขียน App เบื้องต้น

Post by tong »

Facebook: หลักการเขียน App เบื้องต้น

1. App จะต้องขออนุญาต user ก่อนเพื่อให้ได้สิทธิ์การทำงานด้านต่างๆ โดยจะแสดงหน้า login และหน้ายืนยืน

2. เมื่อท่านกดยืนยันแล้ว ทาง Facebook จะแจกค่า Token กลับมายัง App

3. App จะใช้ Token เป็นหลักในการอ้างอิงตัวตนและสิทธิในการทำงานต่างๆ เช่น อ่านข้อความ ดูรายชื่อเพื่อน โพสข้อความ โพสรูป ทำได้สารพัด ซึ่งเวลาที่ท่านอนุญาตให้ App ต่างๆ ท่านต้องอ่านให้ละเอียดว่าตัว App นั้นขอสิทธิ์อะไรบ้าง

Token จะมีการเข้ารหัสไว้ เปรียบเสมือนเป็นกุญแจแทนตัวตน มีแบบต่างๆดังนี้

- App Token สำหรับตัวโปรแกรม
- User Token สำหรับบัญชีผู้ใช้งานเฟซส่วนตัว
- Page Token สำหรับบัญชีผู้ใช้งานเพจ เช่น Manager, Content Creater, Moderator, Advertiser, Insights Analyst

โดยปกติ Facebook จะต้องสมัครยูสเซอร์ใช้งานก่อนเสมอเป็นในนามส่วนตัว ซึ่งคนไทยจะเรียกว่า เฟซ
User Token จะเป็นตัวแทนของบัญชีผู้ใช้งานนี้

จากนั้นยูสเซอร์สามารถสร้างหน้าแฟนเพจเพิ่มได้หลายๆอัน ซึ่งคนไทยจะเรียกว่า เพจ
Page Token จึงเป็นตัวแทนของบัญชีผู้ใช้งานนี้

ดังนั้นบัญชีผู้ใช้งานเพจใดๆจะอยู่ภายใต้บัญชีผู้ใช้งานเฟซส่วนตัวเพียงอันเดียวเท่านั้น
ข้อมูล Page Token จะสามารถหาได้โดย query account จาก User Token

อายุของ Token แบ่งเป็น 3 ชนิด

- Short Lived Time มีอายุแค่ 1- 2 ชั่วโมง มักใช้กับ App แบบ Web Client
- Long Lived Time มีอายุแค่ 60 วัน มักใช้กับ App แบบ Client-Server, MultiDevices, Services (สำหรับ Native iOS-Android จะ refresh เองทุกครั้งที่ใช้ ดังนั้นถ้าไม่ได้ใช้ App ภายใน 60 วันจะต้อง login ใหม่)
- Forever Lived Time ปัจจุบันใช้เฉพาะกับ Page Token เท่านั้น

Token จะใช้ไม่ได้อีกต่อไปในกรณีที่

- Logout
- เปลี่ยน Password
- ท่านยกเลิกการใช้ App นั้นๆ
- หมดอายุ
tong
Site Admin
Posts: 2387
Joined: Fri 01 May 2009 8:55 pm

Re: Facebook: หลักการเขียน App เบื้องต้น

Post by tong »

การขอ User Token

ทำได้หลายหลายวิธีและตามชนิดของ App

1. การขอ Short Lived Token มักใช้กับ App แบบ Web Client (JavaScript)

Code: Select all

https://www.facebook.com/dialog/oauth?
    client_id={app-id}&
    redirect_uri={app-callback-url}&
    scope={app-permission}&
    response_type=token
{app-id} = เลข ID ของ App จากหน้า Developer
{app-callback-url} = เมื่อขออนุญาติแล้ว Facebook จะแจก Token กลับมาทาง URI Fragment
{app-permission} = Permission ที่ต้องการขอจาก user เช่น manage_pages, publish_stream

จะได้เลข User Token แบบ Short Lived ทาง URI Fragment (# Hash สามารถเห็นได้จาก JavaScript เท่านั้น)
01.png

2. Web App ปกติแล้วจะได้ Token เป็นชนิด Short Lived เพื่อความปลอดภัยและสามารถ refresh ใหม่ได้ง่ายๆ จะไม่มีหน้า Login ให้กวนใจเพราะท่านได้อนุญาตไปในครั้งแรกแล้ว แต่เราสามารถเปลี่ยน Short Lived Token เป็น Long Live Token ได้ด้วยคำสั่ง

Code: Select all

https://graph.facebook.com/oauth/access_token?
    client_id={app-id}&
    client_secret={app-secret}&
    grant_type=fb_exchange_token&           
    fb_exchange_token={short-lived-token}
{app-id} = เลข ID ของ App จากหน้า Developer
{app-secret} = เลขลับเฉพาะของ App จากหน้า Developer ห้ามให้ใครรู้ เปรียบเสมือน Password
{short-lived-token} = Short Lived Token ที่ได้จากข้อ 1

จะได้เลข User Token แบบ Long Lived ทาง Response Content

จำไว้ว่า เมื่อไหร่ก็ตามที่ต้องระบุ app-secret จะต้องทำในฝั่ง Server เท่านั้น ห้ามใส่ app-secret ไว้ในโปรแกรมฝั่ง Client อย่างเด็ดขาด เพราะอาจจะถูก crack ได้
03.png

3. การขอออก Code ก่อนแล้วจึงขอ Long Lived Token มักใช้กับ App แบบ Client-Server, MultiDevices, Services มี 2 ขั้นตอนคือ

Code: Select all

https://www.facebook.com/dialog/oauth?
    client_id={app-id}&
    redirect_uri={app-callback-url}&
    scope={app-permission}&
    response_type=code
{app-id} = เลข ID ของ App จากหน้า Developer
{app-callback-url} = เมื่อขออนุญาติแล้ว Facebook จะแจก Token กลับมาทาง Query String
{app-permission} = Permission ที่ต้องการขอจาก user เช่น manage_pages, publish_stream

จะได้เลข Code ทาง Query String

Code: Select all

https://graph.facebook.com/oauth/access_token?
    client_id={app-id}&
    client_secret={app-secret}&
    redirect_uri={app-callback-url}&
    code={code}
{app-id} = เลข ID ของ App จากหน้า Developer
{app-secret} = เลขลับเฉพาะของ App จากหน้า Developer ห้ามให้ใครรู้ เปรียบเสมือน Password
{app-callback-url} = เมื่อขออนุญาติแล้ว Facebook จะแจก Token กลับมาทาง Query String
{code} = เลขที่ได้จากขั้นตอนแรก

จะได้เลข User Token แบบ Long Lived ทาง Response Content

จำไว้ว่า เมื่อไหร่ก็ตามที่ต้องระบุ app-secret จะต้องทำในฝั่ง Server เท่านั้น ห้ามใส่ app-secret ไว้ในโปรแกรมฝั่ง Client อย่างเด็ดขาด เพราะอาจจะถูก crack ได้
04.png
tong
Site Admin
Posts: 2387
Joined: Fri 01 May 2009 8:55 pm

Re: Facebook: หลักการเขียน App เบื้องต้น

Post by tong »

การขอ App Token

ใช้สำหรับตรวจสอบข้อมูล User Token ต่างๆ App Token นี้ไม่มีหมดอายุ

Code: Select all

https://graph.facebook.com/oauth/access_token?
    grant_type=client_credentials&
    client_id={app-id}&
    client_secret={app-secret}
{app-id} = เลข ID ของ App จากหน้า Developer
{app-secret} = เลขลับเฉพาะของ App จากหน้า Developer ห้ามให้ใครรู้ เปรียบเสมือน Password

จะได้เลข App Token ทาง Response Content

จำไว้ว่า เมื่อไหร่ก็ตามที่ต้องระบุ app-secret จะต้องทำในฝั่ง Server เท่านั้น ห้ามใส่ app-secret ไว้ในโปรแกรมฝั่ง Client อย่างเด็ดขาด เพราะอาจจะถูก crack ได้
tong
Site Admin
Posts: 2387
Joined: Fri 01 May 2009 8:55 pm

Re: Facebook: หลักการเขียน App เบื้องต้น

Post by tong »

การตรวจสอบ Token

ใช้สำหรับดูรายละเอียดต่างๆของ User Token เช่น วันหมดอายุ, User ID, ยังใช้ได้อยู่หรือเปล่า

Code: Select all

https://graph.facebook.com/debug_token?
    access_token={app-token}&
    input_token={user-token}
{app-token} = App Token หรือ User Token ของคนเขียน App ก็ได้
{user-token} = User Token แบบต่างๆหรือ Page Token ก็ได้

จะได้ข้อมูลแบบ JSON ทาง Response Content


การหา Page Token

แต่ละ User Token จะสามารถบ่งบอกได้ว่า แต่ละคนนั้นดูแลเพจที่ไหนบ้าง
เราจะใช้ User Token เพื่อโพสข้อความในนามของยูสเซอร์เฟซ
เราจะใช้ Page Token เพื่อโพสข้อความในนามของเพจ

Code: Select all

https://graph.facebook.com/me/accounts?
    access_token={user-token}
{user-token} = User Token แบบต่างๆ

จะได้ข้อมูลแบบ JSON ทาง Response Content
tong
Site Admin
Posts: 2387
Joined: Fri 01 May 2009 8:55 pm

Re: Facebook: หลักการเขียน App เบื้องต้น

Post by tong »

App Permission

App จะต้องขออนุญาตการใช้งานจากผู้ใช้ในครั้งแรกเสมอ ซึ่งจะ redirect ไปยังหน้าของ Facebook

publish_stream = ใช้สำหรับการโพส
manage_pages = ใช้สำหรับการเข้าถึงข้อมูลหน้าเพจที่ยูสเซอร์ดูแลอยู่
Post Reply