Karn Tirasoontorn

July 20, 2021

ผูกผู้ใช้งานหลังบ้านของ Rails เข้ากับผู้ใช้งานของ LINE

ช่วงนี้ได้ศึกษาเกี่ยว LINE Front-end Framework หรือ LIFF ก็มาเจอประเด็นการผูกบัญชีผู้ใช้งานหลังบ้านของ Rails กับผู้ใช้งานของ LINE จะทำอย่างไรได้บ้าง ในเมื่อในฝั่งหลังบ้านเกิดใช้ข้อมูล username และ email ไม่ตรงกับข้อมูล username และ email ที่เราใช้ใน LINE

accounts.png

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

ดังนั้นวิธีที่จะนำมาใช้แก้ปัญหาอันนี้แบบง่ายๆ ก็จะเป็นการใช้ verification key ที่จะถูกสร้างและผูกอยู่กับบัญชีผู้ใช้งานหลังบ้านของแต่ละคน และ verification key ก็จะไม่ซ้ำกัน ในกรณีที่อยากให้ระบบมีความปลอดภัยมากขึ้นก็อาจจะใช้เป็น OTP ก็ได้

โดย Flow ที่จะนำมาใช้ในการยืนยันตัวตนจะเป็นดังนี้

flow.png


ที่นี้เราก็มาลองพัฒนาโปรแกรมเพื่อทดสอบ Flow ดูหน่อยว่าจะเป็นอย่างไรบ้าง
  • สร้างเว็บแอพพลิเคชันของเรา โดยสร้างบัญชีผู้ใช้งานหลังบ้านขึ้นมา โดยมี username  เป็น `user1` และมี verification key เป็น `654321` เราสามารถเข้าสู่ระบบโดยใช้ `user1` จากหน้าเว็บได้


  • สร้าง LINE LIFF Application บนหน้า LINE Console
  • เพื่อให้ง่ายต่อการทดสอบ เราจะใช้ ngrok เข้ามาช่วย โดยเราไม่จำเป็นต้องติดตั้งเว็บแอพพลิเคชันของเราบน Production Server รวมถึงสามารถเข้าถึงผ่าน HTTPS ได้ด้วย
  • นำ LIFF URL ที่ได้ไปเปิดบนเว็บบราวเซอร์


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

References: