← กลับไปหน้าบทความ
ขั้นสูง (MarTech)

ขอข้อมูลโปรไฟล์จาก LIFF ได้อะไรบ้าง และต้องขอความยินยอมตรงไหนก่อน

ทีมบรรณาธิการ linli01 พ.ย. 09:28อัปเดต 01 พ.ย. 09:28อ่าน 2 นาที
ขอข้อมูลโปรไฟล์จาก LIFF ได้อะไรบ้าง และต้องขอความยินยอมตรงไหนก่อน
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

LIFF ขอข้อมูลผ่าน scope ที่ตั้งไว้ในแอป ได้แก่ profile (userId ชื่อ รูป) openid (ID token) email (ต้องขอสิทธิ์เพิ่มจาก LINE) และ chat_message.write (ส่งข้อความเข้าแชท ไม่ใช่การดึงข้อมูล) หน้าอนุญาตของ LINE เป็นคนละชั้นกับการแจ้งวัตถุประสงค์และขอความยินยอมของธุรกิจคุณ ให้ขอเท่าที่ใช้ แล้วบันทึกความยินยอมของคุณเองแยกไว้

สมมติทีมพัฒนาถามว่า ขอ scope email ไว้ก่อนเลยดีไหม เผื่อวันหน้าได้ใช้ ฝ่ายการตลาดตอบว่าดี จะได้เอาอีเมลไปทำ Custom Audience ฝ่ายกฎหมายถามกลับว่าเอาอีเมลไปทำอะไร แจ้งลูกค้าไว้ตรงไหน ทั้งโต๊ะเงียบ เพราะไม่มีใครตอบได้

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

แต่ละ scope ได้ข้อมูลอะไรบ้าง

scopeข้อมูลที่ได้ข้อควรรู้
profileuserId, displayName, pictureUrl, statusMessage ผ่าน liff.getProfile()userId คือตัวเชื่อมกับแชทและ webhook และต่างกันตาม Provider ของแชนเนล (ตรวจเอกสาร)
openidID token ที่ถอดค่าด้วย liff.getDecodedIDToken()ถ้าจะเชื่อค่าฝั่งเซิร์ฟเวอร์ ต้องตรวจโทเค็นกับ LINE ไม่ไว้ใจค่าที่ส่งมาจากเบราว์เซอร์
emailอีเมลที่ผูกกับบัญชี LINE ถ้าผู้ใช้อนุญาตต้องขออนุมัติสิทธิ์อีเมลกับ LINE ต่างหาก และผู้ใช้ปฏิเสธได้ ตรวจเงื่อนไขล่าสุด
chat_message.writeไม่ได้ข้อมูล ได้สิทธิ์ส่งข้อความเข้าห้องแชทที่เปิด LIFFใช้ได้ในแอป LINE เท่านั้น เป็นสิทธิ์ส่งข้อความ ไม่ใช่การดึงข้อมูล

ขอเท่าที่ใช้ ถามตัวเองสองข้อก่อนเติม scope

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

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

ความยินยอมสองชั้นที่ไม่แทนกัน

ชั้นแรกคือหน้าอนุญาตของ LINE ที่ผู้ใช้เห็นเมื่อเปิด LIFF ครั้งแรก เป็นการยอมให้ LINE ส่งข้อมูลตาม scope ให้แอปของคุณ ชั้นที่สองคือการแจ้งและขอความยินยอมของธุรกิจคุณเอง ว่าจะใช้ข้อมูลนั้นทำอะไร เก็บนานแค่ไหน และส่งต่อให้ใคร ตามความเข้าใจของผม หน้าของ LINE ไม่ได้บอกผู้ใช้ว่าคุณจะเอาข้อมูลไปยิงโฆษณาหรือไม่ ชั้นที่สองจึงยังต้องทำเอง

ถ้าธุรกิจของคุณใช้ข้อมูลเพื่อวัดผลอย่างเดียว กับใช้เพื่อส่งเข้าแพลตฟอร์มโฆษณา สองวัตถุประสงค์นี้ควรแยกการแจ้งและแยกช่องยินยอม รายละเอียดเชิงกฎหมายให้ปรึกษาผู้เชี่ยวชาญ เนื้อหาด้านเทคนิคเรื่องการจัดเก็บอ่านต่อได้ใน PDPA กับการเก็บ LINE User ID

วางความยินยอมตรงไหนในลำดับหน้าจอ

  1. ก่อนเรียก liff.login() หรือก่อนหน้าที่เริ่มใช้โปรไฟล์ แสดงข้อความสั้นว่าจะใช้ข้อมูลอะไรเพื่ออะไร พร้อมลิงก์ไปนโยบายฉบับเต็ม
  2. ถ้าจะใช้ข้อมูลส่งเข้า CAPI หรือสร้างกลุ่มเป้าหมายโฆษณา ให้มีช่องติ๊กแยกต่างหาก ไม่ติ๊กไว้ล่วงหน้า และไม่ผูกกับการใช้บริการหลัก
  3. บันทึกผลทุกครั้ง ได้แก่ userId เวลา เวอร์ชันของข้อความที่แสดง วัตถุประสงค์ที่ยินยอม และช่องทางที่ได้มา ตามแบบใน ร่องรอยการให้ความยินยอม
  4. ให้ถอนความยินยอมได้ง่ายพอ ๆ กับตอนให้ เช่นพิมพ์คำสั้น ๆ ในแชทหรือกดปุ่มในหน้า LIFF แล้วหยุดใช้ข้อมูลนั้นจริง
  5. ตรวจสถานะความยินยอมก่อนส่งข้อมูลออกทุกครั้ง ตามหลักใน Consent Gate ก่อนยิง CAPI

เก็บอะไร ไม่เก็บอะไร

  • เก็บ userId ซึ่งเป็นตัวเชื่อมที่จำเป็น และเก็บบันทึกความยินยอมตามที่ระบุข้างบน
  • เก็บเมื่อมีเหตุผล displayName ถ้าใช้ทักทายหรือตรวจว่าเป็นคนเดียวกันในรายงาน
  • ไม่ต้องเก็บ pictureUrl ถ้าไม่ได้แสดงผลที่ไหน ลิงก์รูปอาจเปลี่ยนได้และไม่ช่วยวัดผล
  • ห้ามเก็บดิบในล็อก access token และ ID token เพราะใครได้ไปก็สวมรอยเรียก API ได้ ตรวจแล้วทิ้ง หรือเก็บเฉพาะ userId ที่ได้จากการตรวจ

กรณีเอเจนซีที่ทำให้หลายแบรนด์

อย่าใช้ LIFF app ตัวเดียวข้ามแบรนด์ แต่ละแบรนด์ควรมีนโยบายความเป็นส่วนตัวและบันทึกความยินยอมของตัวเอง และเพราะ userId ต่างกันตาม Provider (ตรวจเอกสาร) การพยายามเชื่อมคนเดียวกันข้ามลูกค้าก็ทำไม่ได้ในทางเทคนิค ซึ่งถือว่าเป็นข้อดี ถ้ามีคำถามว่าจะเก็บข้อมูลคุยในแชทด้วยไหม ให้ดูแนวทางเพิ่มใน ขอความยินยอมในแชท LINE

สรุป

ก่อนแก้ scope ครั้งต่อไป ให้ทำตารางสามคอลัมน์ ได้แก่ ข้อมูลที่ขอ ใช้ทำอะไร และแจ้งผู้ใช้ตรงไหน ถ้าช่องใดว่างให้ถอด scope นั้นออก วิธีนี้ตัดการขอข้อมูลที่ไม่มีเจ้าของออกได้เร็วกว่าการนั่งถกกันในที่ประชุม

  • scope แต่ละตัวให้ข้อมูลคนละชนิด และ chat_message.write ไม่ใช่การดึงข้อมูล
  • หน้าอนุญาตของ LINE กับการแจ้งและขอความยินยอมของธุรกิจเป็นคนละชั้น
  • บันทึกความยินยอมและตรวจสถานะก่อนส่งข้อมูลออกทุกครั้ง
  • ไม่เก็บ token ดิบในล็อก

คำถามที่พบบ่อย

เรียก liff.getProfile() ได้เลยโดยไม่ตั้ง scope ไหม?

ต้องตั้ง scope profile ในการตั้งค่า LIFF app ก่อน ไม่งั้นเรียกแล้วจะไม่ได้ข้อมูลหรือได้ error ชื่อเมนูตั้งค่าในคอนโซลอาจเปลี่ยนตามเวอร์ชัน ให้ดูจากเอกสารล่าสุด

ถ้าผู้ใช้ไม่กดอนุญาตในหน้าของ LINE จะเกิดอะไรขึ้น?

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

เอา LINE userId ไปทำ Custom Audience ได้ไหม?

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

เปลี่ยนวัตถุประสงค์การใช้ข้อมูลทีหลังต้องขอใหม่ไหม?

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

userId ของคนเดียวกันจะเหมือนกันทุก LIFF app ไหม?

ตามเอกสาร userId ผูกกับ Provider ของแชนเนล ถ้า LIFF app และบอตอยู่ใน Provider เดียวกัน ค่ามักตรงกัน ถ้าอยู่คนละ Provider ค่าจะต่างกัน ให้ตรวจโครงสร้าง Provider ของคุณก่อนออกแบบการเชื่อมข้อมูล

ลองตรวจด้วยตัวเอง

LIFF Campaign Parameter Lab

ทดสอบว่า UTM และพารามิเตอร์แคมเปญของคุณรอดผ่าน liff.state เข้าแอปหรือหายกลางทาง

ทดสอบ LIFF URL

ใช้ฟรี ไม่ต้องสมัคร ไม่เก็บข้อมูลที่คุณกรอก

วัด Conversion LINE ทุกแบรนด์ รวมศูนย์ที่เดียว

องค์กรที่มีหลายแบรนด์ หลายสาขา หลาย LINE OA linli รวม Tracking และส่ง Conversion กลับทุกแพลตฟอร์ม พร้อม Custom Limit เริ่มฟรี 14 วัน

ติดต่อทีม Sales

บทความที่เกี่ยวข้อง

ดึงรายงาน LINE Ads ด้วย API เข้าแดชบอร์ดตัวเอง เลิกก๊อปตัวเลขด้วยมือ

ดึงรายงาน LINE Ads ด้วย API เข้าแดชบอร์ดตัวเอง เลิกก๊อปตัวเลขด้วยมือ

เช้าวันจันทร์ที่ต้องเปิด 14 บัญชีแล้วก๊อปค่าแอดลงชีตเสียเวลาสองชั่วโมงและพิมพ์ผิดได้ง่าย บทความนี้ออกแบบ pipeline ดึงรายงาน LINE Ads เข้าแดชบอร์ดของตัวเอง
ถ้าวันหนึ่งต้องย้ายออกจากบัญชี LINE OA เดิม เอาข้อมูลเพื่อนออกได้แค่ไหน

ถ้าวันหนึ่งต้องย้ายออกจากบัญชี LINE OA เดิม เอาข้อมูลเพื่อนออกได้แค่ไหน

หลายร้านคิดว่าส่งออกรายชื่อเพื่อนจาก OA ได้เหมือนส่งออกรายชื่อลูกค้า แต่ความจริงมีข้อมูลที่ย้ายได้ ย้ายไม่ได้ และต้องวางแผนก่อนวันที่ต้องใช้
รู้ได้ยังไงว่าคนที่ทัก LINE วันนี้ คือคนที่คลิก Google Ads เมื่อ 7 วันก่อน สร้าง Single Customer View

รู้ได้ยังไงว่าคนที่ทัก LINE วันนี้ คือคนที่คลิก Google Ads เมื่อ 7 วันก่อน สร้าง Single Customer View

ลูกค้าหนึ่งคนทิ้งรอยไว้สี่ห้าที่ คลิกแอด เข้าเว็บ ทักไลน์ โอนเงิน แต่ในระบบส่วนใหญ่ รอยพวกนั้นเป็นคนละคนกันหมด บทความนี้ว่าด้วยการเย็บร่องรอยให้กลับมาเป็นคนเดียว