Sprawdzone metody dotyczące uprawnień internetowych

Prośby o uprawnienia to główny mechanizm sieciowy chroniący zaawansowane funkcje, które mogą potencjalnie zagrażać prywatności i bezpieczeństwu użytkowników. Prośby o zgodę pozwalają sprawdzić, czy użytkownik chce zezwolić witrynie, która wysłała prośbę, na dostęp do danej funkcji. Propozycje uprawnień są używane w przypadku różnych interfejsów API, w tym przechwytywania multimediów (kamera i mikrofon), geolokalizacji, dostępu do pamięci, MIDI i powiadomień (więcej informacji znajdziesz w dokumentacji Permissions API w MDN).

Ten przewodnik zawiera sprawdzone metody wyświetlania użytkownikom próśb o przyznanie uprawnień na podstawie statystyk użytkowania Chrome i badań użytkowników. Stosując te sprawdzone metody, użytkownicy powinni widzieć mniej niepotrzebnych promptów, dzięki czemu deweloperzy będą otrzymywać mniej decyzji o zablokowaniu. Artykuł kończy się informacjami o wzorcach kodu przydatnych podczas pracy z interfejsami API z uprawnieniami dostępu oraz sprawdzonymi metodami pomagania użytkownikom w odzyskiwaniu dostępu po zablokowaniu.

Sprawdzone metody dotyczące tworzenia próśb

Prośbę o pozwolenie należy poprosić w momencie interakcji z użytkownikiem, gdy będzie on mógł zrozumieć, dlaczego pytasz i jakie korzyści płyną z pozwolenia. Gdy tylko jest to możliwe, należy umożliwić użytkownikom korzystanie z innych sposobów uzyskania tej samej funkcjonalności. Ogólnie rzecz biorąc, prośba o rzadsze wyświetlanie prośby o zgodę przez dokładne wybieranie momentów, w których prosisz użytkownika, zmniejsza ryzyko, że użytkownik natknie się na blokadę, którą trudno będzie odzyskać. Więcej informacji o każdej z tych sugestii znajdziesz poniżej.

Nigdy nie pytaj podczas wczytywania strony ani bez interakcji użytkownika

Proszenie użytkowników o zgodę podczas wczytywania strony to odpowiednik proszenia klienta o informacje poufne, gdy wchodzi on do sklepu stacjonarnego. Wyświetlenie prośby o zgodę na wykorzystanie danych (być może wśród kilku innych próśb o zasubskrybowanie newslettera i zgodę na stosowanie plików cookie) nie jest łatwe. Użytkownicy nie będą rozumieć, dlaczego o to pytamy i jakie korzyści mogą przynieść.

Nawet jeśli aplikacja internetowa nie będzie działać bez dostępu do jakiejś funkcji, warto dać użytkownikom możliwość zrozumienia, do czego jest potrzebna. Możesz na przykład umieścić w prośbie własny komunikat o uprawnieniach, który wyjaśnia jego potrzebę i daje użytkownikom wybór (np. w miarę możliwości udostępniając alternatywne sposoby uzyskania takiej samej funkcji). Najlepszy moment na poproszenie o pozwolenie jest lepszy niż podczas wczytywania strony. W dalszej części tego przewodnika znajdziesz kilka takich przykładów.

Analogicznie nietrafna sytuacja, w której prośba o uprawnienia, wymaga wcześniejszej interakcji z użytkownikiem (jest to tzw. przejściowa aktywacja użytkownika). Dane telemetryczne dotyczące Chrome pokazują, że 77% prośb o przyznanie uprawnień w Chrome na komputerach wyświetla się bez tak podstawowego sygnału zamiaru użytkownika, w efekcie tylko 12% takich promptów jest dozwolonych. Po interakcji użytkownika odsetek zezwoleń wzrasta do 30%. Dlatego prosimy o pozwolenie dopiero wtedy, gdy użytkownik wejdzie w interakcję ze stroną w jakiejś formie.

Pytaj tylko wtedy, gdy użytkownicy są w stanie zrozumieć, dlaczego pytasz

Decyzje o zgodzie są często podejmowane w ramach ochrony prywatności. Dzięki ramom spójności kontekstowej wiemy, że decyzje dotyczące prywatności są bardzo kontekstowe. Zrozumienie, dlaczego dostęp jest potrzebny, może być kluczowym aspektem tego procesu. Należy więc prosić o funkcje, które są dla użytkownika wartościowe (i w przypadku których użytkownicy prawdopodobnie się zgodzą, że będą naprawdę wartościowe). Warto też poprosić o zgodę w momencie, gdy użytkownik wie, dlaczego dana funkcja jest przydatna. Chodzi o to, aby użytkownicy mogli w jak najprostszy sposób zrozumieć kontekst użytkowania.

Nasze badania opinii użytkowników pokazują, że użytkownicy znacznie chętniej zgadzają się na dostęp, jeśli rozumieją, dlaczego witryna prosi o dostęp, i czerpią z tego korzyści. Okazuje się też, że użytkownicy chcą najpierw badać nieznane witryny, aby lepiej zrozumieć, co mogą zyskać w zamian za zezwolenie na dostęp. W międzyczasie często odrzucają lub ignorują prośby o uprawnienia. Dzięki uprawnieniom jednorazowym mogą one zezwolić na pierwszą wizytę. Aplikacja musi obsługiwać te funkcje.

Jeśli to możliwe, zapewnij alternatywne sposoby osiągnięcia tej samej funkcjonalności.

Rezultaty działania niektórych funkcji mogą nie być przydatne dla użytkowników. Na przykład geolokalizacja komputera bez czujnika GPS może zwracać nieprawidłową lokalizację, ponieważ użytkownik ma połączenie z siecią VPN. Inni użytkownicy mogą nie zechcieć przyznać dostępu do schowka, ponieważ wolą mieć kontrolę nad tymi zdarzeniami i ręcznie uruchamiać te zdarzenia za pomocą kombinacji klawiszy. W takich sytuacjach ważne jest, aby udostępnić alternatywne sposoby uzyskania tych samych rezultatów. Jeśli na przykład prosisz o uprawnienia do geolokalizacji, udostępnij pole tekstowe, w którym użytkownicy mogą samodzielnie wpisać kod pocztowy lub adres. Jeśli korzystasz ze schowka, sprawdź, czy elementy do skopiowania można zaznaczyć i skopiować za pomocą kombinacji klawiszy lub menu kontekstowego. Dzięki powiadomieniom odbiorcy otrzymują e-maile zamiast powiadomień push.

Przydatnym wzorcem jest używanie alternatywnego interfejsu jako wyjaśnienia, dlaczego dostęp może być korzystny. Użytkownicy, którzy widzą opcję wpisania lokalizacji obok przycisku aktywującego interfejs API geolokalizacji, mają większą kontrolę nad tym, co się wydarzy, ponieważ rozumieją, że mogą też po prostu wpisać swój adres. Podobnie jest w sytuacji, gdy trzeba zdecydować, czy chcesz otrzymywać powiadomienia push lub e-mailem, czy dołączyć do spotkania bez zezwalania na dostęp do kamery i mikrofonu. Użytkownicy z większym prawdopodobieństwem zrozumieją, na czym polegają korzyści.

Nie wpadaj w blokadę, bo trudno jest ją rozwiązać.

Gdy użytkownik postanowi na stałe zablokować dostęp do funkcji z ograniczeniami uprawnień, przeglądarki uwzględnią tę decyzję. Gdyby można było nadal prosić użytkowników o dostęp, strony o złych intencjach wciąż bombardują nimi użytkowników. Dlatego przywrócenie stanu zablokowanej funkcji celowo wymaga od użytkownika pewnego wysiłku. Dlatego nie proś użytkowników o pozwolenie w sytuacjach, gdy istnieje duże prawdopodobieństwo, że wielu użytkowników odmówi dostępu.

Typowym sposobem realizacji tego zadania jest użycie tak zwanego promptu wstępnego, w którym wyjaśniasz użytkownikom, co ma się wydarzyć i dlaczego aplikacja potrzebuje funkcji, o którą prosisz. Prośba przeglądarki pojawia się tylko wtedy, gdy użytkownik zareaguje twierdząco na taki komunikat. W niektórych sytuacjach użytkownicy mogą w uzasadniony sposób chcieć odzyskać dostęp do konta. Więcej informacji na ten temat znajdziesz w sekcji Pomaganie użytkownikom w odzyskiwaniu konta po zablokowaniu.

Zwracanie uwagi na treści osób trzecich

Pojawia się nieoczekiwane źródło próśb o uprawnienia, o których warto wiedzieć. Jeśli w swojej witrynie używasz skryptów innych firm, mogą one wywoływać prośby o przyznanie uprawnień, których nie chcesz wyświetlać. Może to wpłynąć na wrażenia użytkowników Twojej witryny, zwłaszcza jeśli takie prompty nie są zgodne z wyżej przedstawionymi sprawdzonymi metodami. Aby zachować kontrolę nad wrażeniami użytkowników, musisz uważnie zapoznać się z dokumentacją zewnętrznych bibliotek i skryptów, które dodajesz do swojego kodu.

Kiedy poprosić o zgodę

Oto kilka przykładowych sytuacji, kiedy warto poprosić o zgodę, zgodnie z podanymi sprawdzonymi metodami:

  • Gdy użytkownik kliknie przycisk „Użyj mojej lokalizacji” obok pola formularza, aby ręcznie wpisać adres.
  • Gdy użytkownik zasubskrybuje kanał lub post i kliknie przycisk potwierdzenia w oknie dialogowym z informacją, że aktualizacje mogą być dostarczane w postaci e-maili lub powiadomień na telefon lub komputer.
  • Gdy użytkownik wejdzie na stronę, która przygotowuje go do dołączenia do rozmowy wideo, i wyraźnie odpowie, że chce, by była widoczna i usłyszana (zobacz studium przypadku dotyczące Google Meet).

Wzorce kodu zachęcające do uzyskania uprawnień

Uprawnienia do korzystania z interfejsu API można uzyskać na różne sposoby w zależności od danego interfejsu API. Niektóre (zwykle starsze) interfejsy API używają modelu, w którym przeglądarka automatycznie prosi o pozwolenie przy pierwszej próbie użycia danego interfejsu. Przykładem może być interfejs API geolokalizacji przy wywoływaniu navigator.geolocation.getCurrentPosition().

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

Inne interfejsy API używają modelu, w którym musisz najpierw bezpośrednio poprosić o uprawnienia za pomocą metody statycznej. Dobrym przykładem jest Notification.requestPermission() do zezwalania na powiadomienia lub mniej popularna funkcja DeviceOrientationEvent.requestPermission(), która jest częścią interfejsu Device Orientation Events API. Pamiętaj, że niektóre przeglądarki mogą automatycznie przyznawać uprawnienia wybranym interfejsom API. Na przykład Chrome zawsze zezwala na dostęp do orientacji urządzenia, a Safari wyświetla prompt.

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. */
}

Jak sprawdzić stan uprawnień

Aby sprawdzić, czy możesz użyć określonego interfejsu API, użyj metody navigator.permissions.query() z interfejsu 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.
}

Obsługa przeglądarek

  • 43
  • 79
  • 46
  • 16

Źródło

Pomóż użytkownikom odzyskać dostęp po zablokowaniu konta

Aby pomóc użytkownikom w rozwiązywaniu problemów z dostępem, wykryj, że zablokowali dostęp przy użyciu interfejsu Permissions API, i poinformuj ich, jak zmienić ustawienia. Jeśli na przykład użytkownicy wchodzą w interakcję z elementami interfejsu powiązanymi z funkcją z ograniczeniami uprawnień, użyj wzorca opisanego w poprzedniej sekcji i otwórz okno rozwiązywania problemów. Dokładne czynności, jakie należy wykonać, aby zmienić stan uprawnień, różnią się w zależności od przeglądarki, warto więc zaoferować dopasowane opisy na podstawie ciągu klienta użytkownika i dla najczęściej używanych przeglądarek w Twojej usłudze.

W Chrome użytkownicy powinni otworzyć Ustawienia witryny, klikając ikonę „dostrój” po lewej stronie paska adresu. W tym miejscu można włączyć odpowiednie uprawnienia. W niektórych przypadkach przed użyciem tej funkcji konieczne może być ponowne załadowanie strony. W takim przypadku u góry okna pojawi się pasek komunikatu z propozycją ponownego załadowania po kliknięciu odpowiedniego przycisku.

Zarządzanie stronami w przeglądarce Chrome.

Prośba o ponowne załadowanie strony po zmianie uprawnień za pomocą elementów sterujących witryny.

Podobne interfejsy do kontrolowania uprawnień występują w innych przeglądarkach (np. zobacz, jak to działa w Firefoksie).