บทความนี้ขอมอบ credit ให้ withsp
สวัสดีครับ วันนี้เราจะมาคุยกันเรื่อง integration ระหว่าง K2 กับอย่างอื่นที่ไม่ใช่ตระกูล Microsoft กันบ้าง นั่นคือ Google GSuite นั่นเอง เรามาดู pre-requitsite กันก่อน
- K2 Five version 5.0001.1000.1 ขึ้นไป (version นี้ออกวันที่ 28 Nov 2017)
- Google account
อย่างแรกเลย เราต้องมาเตรียมตัวในฝั่ง Google กันก่อน ให้เข้าไป enable service ที่เราต้องการผ่าน ให้ login เข้าไปด้วย google account ของเราเอง ที่ url https://console.developers.google.com/apis จากนั้นให้กด tab Library ทางด้านซ้าย
ให้เลือก library ที่เราต้องการใช้ ในตัวอย่างนี้เราจะใช้ Google Drive กัน
ให้กดปุ่ม Enable
จากนั้นให้กดที่ tab Credential และเลือก OAuth consent screen ให้เลือก email แล้วก็ใส่ Product Name เป็นอะไรก็ได้
เมื่อกดปุ่ม Save แล้วให้กดกลับไปที่ Credentials แล้วเลือก OAuth client ID
ในหน้า Create client ID ให้เลือก Application Type เป็น Web application และตั้งชื่อ client เป็นอะไรก็ได จากนั้นใส่ Authorised JavaScript origins เป็น url ของเครื่อง K2 กับ Authorised redirect URIs ให้ใส่เป็น url เครื่อง K2 ต่อด้วย /identity/token/oauth/2
เราจะได้ Client ID กับ Client secret มาเพื่อเอาไป register กับ K2 ต่อไป เป็นอันเสร็จสิ้นกระบวนการฝั่ง Google
มาที่ฝั่ง K2 บ้าง ให้เข้าไปที่ site management กดไปที่ Authentication => OAuth => Resource Types ให้สร้าง Resource Type ใหม่ขึ้นมา
เมื่อสร้างเสร็จให้สร้าง Resource Type Parameters ที่ tab ด้านล่าง
จากนั้นให้ไปกดที่ OAuth => Resources ให้สร้าง OAuth Resource ใหม่ขึ้นมา โดยเลือก Resource Type ที่เราสร้างไว้แล้ว และใส่ Authorization Endpoint เป็น https://accounts.google.com/o/oauth2/auth และ Token Endpoint เป็น https://accounts.google.com/o/oauth2/token
กดสร้าง OAuth Resource แล้วก็ไปกำหนดค่า parameter กัน
- client_id กับ client_secret ให้ใส่ค่าที่ได้มาจาก Google โดย client_secret จะใส่แค่ Authorization Value กับ Token Value
- response_type ใส่ Authorization Value เป็น code
- scope ใส่เป็น https://www.googleapis.com/auth/drive
- redirect_uri ใส่ Authorization Value กับ Token Value เป็น url ของ K2 ต่อด้วย /identity/token/oauth/2
- grant_type ใส่ Token Value เป็น authorization_code
- access_type ใส่ Authorization Value กับ Token Value เป็น online
ถ้าทำเสร็จเรียบร้อย เราจะได้ OAuth ที่พร้อมสำหรับเอาไปใช้ register service instance แล้ว ในการจะ register REST service ให้ K2 เราจำเป็นจะต้องมี json ของ service ที่เราจะใช้งาน จะไปเขียน swagger เองก็ได้ แต่ด้วยความที่ Google API เป็นอะไรที่ค่อนข้างจะดัง เราเลยสามารถไปหามาจากที่อื่นได้ ผมไปหามาจาก https://apis.guru/browse-apis/ เราก็จะได้ json มาใช้แล้ว
ขั้นต่อไปให้ไปที่ SmartObject Service Tester หรือใน Management site ก็ได้ แล้วกด Register REST Service เลือก Authentication Type เป็น OAuth และเลือก OAuth Resource เป็นอันที่เราสร้างไว้
ถ้าเจอ error นี้ไม่ต้องตกใจ เมื่อกด OK tester จะเปิด browser ให้เพื่อ authenticate กับ Google ให้ ใส่ username และ password จนถึงหน้า Authorization Successful
ให้กด Add Service Instance อีกที จะสามารถสร้าง Service Instance ได้ จากนั้นก็จะสามารถสร้าง SmartObject เพื่อดึงข้อมูลจาก Google Drive ได้
วิธีการสร้าง oAuth ใน K2 reference มาจาก https://help.k2.com/kb001702 ส่วน api ของ google ดู document ได้จากใน web API ของ Google เลย สำหรับคราวนี้ก็จบเพียงเท่านี้ เจอกันใหม่คราวหน้าครับ 🙂