แนวทางปฏิบัติแนะนำสำหรับสิทธิ์บนเว็บ

ข้อความแจ้งสิทธิ์เป็นกลไกหลักของเว็บในการปกป้องความสามารถที่มีประสิทธิภาพซึ่งอาจเป็นอันตรายต่อความเป็นส่วนตัวและความปลอดภัยของผู้ใช้ เมื่อใช้ข้อความแจ้งสิทธิ์ เบราว์เซอร์มีเป้าหมายเพื่อให้มั่นใจว่าผู้ใช้ตั้งใจที่จะให้เว็บไซต์ที่ส่งคำขอเข้าถึงความสามารถที่เป็นปัญหา ข้อความแจ้งสิทธิ์ใช้สำหรับ API จำนวนหนึ่ง ซึ่งรวมถึงการจับภาพสื่อ (กล้องและไมโครโฟน), ตำแหน่งทางภูมิศาสตร์, การเข้าถึงพื้นที่เก็บข้อมูล, MIDI และการแจ้งเตือน (โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบของ Permissions API ใน MDN)

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

แนวทางปฏิบัติแนะนำในการใช้ข้อความแจ้ง

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

ไม่ต้องถามเมื่อโหลดหน้าเว็บหรือไม่มีการโต้ตอบของผู้ใช้

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

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

และกรณีที่ไม่เหมาะสมคล้ายๆ กันที่ควรขอสิทธิ์คือเมื่อไม่มีการโต้ตอบจากผู้ใช้ก่อนหน้า (หรือเรียกอีกอย่างว่าการเปิดใช้งานผู้ใช้ชั่วคราว) การตรวจวัดระยะไกลของ Chrome แสดงให้เห็นว่า 77% ของข้อความแจ้งสิทธิ์บนเดสก์ท็อป Chrome แสดงขึ้นโดยไม่มีสัญญาณพื้นฐานที่บอกถึงความตั้งใจของผู้ใช้ ดังนั้นจึงมีเพียง 12% ของพรอมต์ดังกล่าวที่ได้รับอนุญาต หลังจากผู้ใช้โต้ตอบ อัตราคำขอจะเพิ่มขึ้นเป็น 30% ดังนั้น ให้ขอสิทธิ์หลังจากที่ผู้ใช้โต้ตอบกับหน้าเว็บในบางรูปแบบเท่านั้น

ถามเฉพาะเมื่อผู้ใช้เข้าใจเหตุผลที่คุณถามเท่านั้น

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

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

เสนอวิธีอื่นในฟังก์ชันการทำงานเดียวกันนี้เมื่อเป็นไปได้

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

รูปแบบที่มีประโยชน์คือการใช้ UI ทางเลือกเป็นคำอธิบายว่าทำไมการเข้าถึงจึงมีประโยชน์ ผู้ใช้จะเห็นตัวเลือกให้ป้อนตำแหน่งถัดจากปุ่มที่ทริกเกอร์ API ตำแหน่งทางภูมิศาสตร์จะรู้สึกว่าสามารถควบคุมสิ่งที่กำลังจะเกิดขึ้นได้ เนื่องจากผู้ใช้ทราบว่าตนเพียงแค่พิมพ์ที่อยู่ของตนเองได้เช่นกัน ในทำนองเดียวกัน หากเลือกได้ระหว่างรับการแจ้งเตือนผ่านข้อความ Push หรืออีเมล หรือเข้าร่วมการประชุมโดยไม่อนุญาตให้เข้าถึงกล้องและไมโครโฟน ผู้ใช้ก็จะเข้าใจข้อดีที่ตนได้รับอย่างเป็นธรรมชาติมากขึ้น

อย่าปล่อยให้ตัวเองเข้าสู่สถานะถูกบล็อกเพราะการฟื้นตัวจาก

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

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

ให้ความสำคัญกับเนื้อหาของบุคคลที่สาม

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

กรณีที่ควรขอสิทธิ์

ต่อไปนี้คือตัวอย่างบางส่วนของช่วงเวลาที่เหมาะสมในการขอสิทธิ์ โดยทำตามแนวทางปฏิบัติแนะนำที่อธิบายไว้

  • หลังจากผู้ใช้คลิกปุ่ม "ใช้ตำแหน่งของฉัน" ข้างช่องแบบฟอร์มสำหรับป้อนที่อยู่ด้วยตนเอง
  • หลังจากที่ผู้ใช้ติดตามช่องวิดีโอหรือโพสต์ และคลิกปุ่มยืนยันในกล่องโต้ตอบที่อธิบายว่าการอัปเดตดังกล่าวสามารถส่งเป็นอีเมลหรือการแจ้งเตือนไปยังโทรศัพท์หรือเดสก์ท็อปของผู้ใช้ได้
  • หลังจากที่ผู้ใช้มาถึงหน้าเว็บที่เตรียมผู้ใช้เพื่อเข้าร่วมวิดีโอคอล และตอบคำถามยืนยันว่าต้องการให้ผู้ใช้เห็นและได้ยินในข้อความแจ้งล่วงหน้า (ดูกรณีศึกษาจาก Google Meet นี้)

รูปแบบโค้ดสำหรับการขอสิทธิ์

การขออนุญาตใช้ API เกิดขึ้นผ่านวิธีการต่างๆ โดยขึ้นอยู่กับ API API บางรายการ (โดยปกติจะเป็นรุ่นเก่า) ใช้โมเดลที่เบราว์เซอร์จะขอสิทธิ์โดยอัตโนมัติในครั้งแรกที่คุณพยายามใช้ API ตัวอย่างหนึ่งคือ Geolocation API เมื่อเรียกใช้ navigator.geolocation.getCurrentPosition()

try {
  navigator.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
  console.error(error);
}

API อื่นๆ ใช้โมเดลที่คุณต้องขอสิทธิ์อย่างชัดแจ้งก่อนโดยใช้เมธอดแบบคงที่ ตัวอย่างที่ดีคือ Notification.requestPermission() สำหรับการอนุญาตให้แสดงการแจ้งเตือน หรือ DeviceOrientationEvent.requestPermission() ที่พบไม่บ่อยนักซึ่งเป็นส่วนหนึ่งของ Device Orientation Events API โปรดทราบว่าบางเบราว์เซอร์อาจให้สิทธิ์แก่ API ที่ระบุโดยอัตโนมัติ ตัวอย่างเช่น Chrome อนุญาตให้เข้าถึงการวางแนวของอุปกรณ์เสมอ ในขณะที่ Safari จะแสดงข้อความแจ้ง

const result = await DeviceOrientationEvent.requestPermission();
console.log(`The user's decision when prompted to use the Device Orientation
Events API was: ${result}.`);
if (result === 'granted') {
  /* Use the API. */
}

วิธีตรวจสอบสถานะสิทธิ์

หากต้องการตรวจสอบว่าคุณใช้ API บางรายการได้หรือไม่ ให้ใช้เมธอด navigator.permissions.query() จาก Permissions API

const result = await navigator.permissions.query({ name: 'geolocation' });
console.log(`The result of querying for the Geolocation API is:
${result.state}.`);
if (result.state === 'granted') {
  // Use the API.
}

การรองรับเบราว์เซอร์

  • 43
  • 79
  • 46
  • 16

แหล่งที่มา

ช่วยให้ผู้ใช้กู้คืนสถานะที่ถูกบล็อก

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

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

การควบคุมเว็บไซต์ในเบราว์เซอร์ Chrome

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

เบราว์เซอร์อื่นจะมี UI ที่คล้ายกันสำหรับควบคุมสิทธิ์ (เช่น ดูวิธีการทำงานใน Firefox)