Prośby o przyznanie uprawnień to główny mechanizm w internecie, który chroni zaawansowane funkcje przed potencjalnym zagrożeniem dla prywatności i bezpieczeństwa użytkowników. Poprzez wyświetlanie promptów dotyczących uprawnień przeglądarki starają się zapewnić, aby użytkownik zezwalał stronie proszącej o dostęp na korzystanie z określonej funkcji. Prośby o przyznanie 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).
W tym przewodniku przedstawiamy sprawdzone metody wyświetlania użytkownikom próśb o przyznanie uprawnień na podstawie statystyk dotyczących korzystania z Chrome i badań dotyczących użytkowników. Dzięki stosowaniu tych sprawdzonych metod użytkownicy powinni otrzymywać mniej niepotrzebnych promptów, co oznacza, że deweloperzy będą podejmować mniej decyzji o blokowaniu. Artykuł kończy się informacjami o wzorcach kodu przydatnych podczas pracy z interfejsami API z uprawnieniami dostępu oraz sprawdzonymi metodami ułatwiania użytkownikom przywracania po zablokowaniu konta.
Sprawdzone metody dotyczące promptów
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. W miarę możliwości należy umożliwić użytkownikom korzystanie z alternatywnych sposobów realizacji tej samej funkcji. Zgodnie z ogólnymi wytycznymi rzadsze proszenia o uprawnienia i staranne wybieranie momentów, w których prosisz o nie, zmniejsza ryzyko, że użytkownicy trafią do stanu zablokowania, z którego trudno się wydostać. Poniższe sprawdzone metody zawierają więcej informacji o każdej z tych sugestii.
Nigdy nie pytaj podczas wczytywania strony ani bez interakcji użytkownika
Proszenie użytkowników o zgodę podczas wczytywania strony jest równoznaczne z proszeniem klienta o poufne informacje podczas wizyty w sklepie stacjonarnym. Wyświetlanie prośby o zgodę (być może w połączeniu z kilkoma innymi prośbami o subskrypcję newslettera i zgodę na używanie plików cookie) może być bardzo nieprzyjemne. Użytkownicy nie będą rozumieć, dlaczego o to pytamy i jakie korzyści mogą przynieść.
Nawet jeśli aplikacja internetowa nie może działać bez dostępu do określonej funkcji, powinnaś dać użytkownikom możliwość zrozumienia, dlaczego jest ona 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). Jeśli nie możesz wymyślić lepszego momentu na poproszenie o uprawnienia niż podczas wczytywania strony, w tym przewodniku znajdziesz kilka przykładów.
Analogicznie nietrafna sytuacja, w której prośba o uprawnienia, wymaga wcześniejszej interakcji z użytkownikiem (jest to tzw. tymczasowa 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 uprawnieniach są często podejmowane w ramach ochrony prywatności. Zgodnie z ramami integralności kontekstowej wiemy, że decyzje dotyczące prywatności są bardzo kontekstowe. Kluczowym aspektem jest zrozumienie, dlaczego dostęp jest potrzebny. Dlatego powinieneś poprosić o możliwości, które są Ci potrzebne do zapewnienia użytkownikom wartości (i w przypadku których użytkownicy prawdopodobnie zgodzą się, że rzeczywiście uzyskają wartość). Dodatkowo prośbę o pozwolenie należy kierować w momencie, gdy użytkownikowi jest jasne, dlaczego dana funkcja jest przydatna. Chodzi o to, aby użytkownicy mogli w jak najprostszy sposób zrozumieć kontekst użytkowania.
Z naszych badań dotyczących użytkowników wynika, że użytkownicy znacznie częściej zezwalają na dostęp, gdy rozumieją, dlaczego witryna prosi o dostęp, i widzą 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 zachowania.
W miarę możliwości zapewnij alternatywne sposoby realizacji tej samej funkcji.
Wyniki 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 chcieć udostępniać dostępu do schowka, ponieważ wolą zachować kontrolę i uruchamiać te zdarzenia ręcznie za pomocą kombinacji klawiszy. W takich sytuacjach ważne jest zapewnienie alternatywnych sposobów osiągnięcia tych samych wynikó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. W przypadku schowka upewnij się, że elementy do skopiowania można też zaznaczyć i skopiować za pomocą kombinacji klawiszy lub menu kontekstowego. W przypadku powiadomień oferuj użytkownikom wysyłanie e-maili zamiast powiadomień push.
Przydatnym wzorcem jest użycie alternatywnego interfejsu użytkownika jako wyjaśnienia, dlaczego dostęp może być przydatny. 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, jeśli użytkownik ma do wyboru otrzymywanie powiadomień przez powiadomienia push lub e-maila albo dołączanie do spotkania bez zezwalania na dostęp do kamery i mikrofonu, łatwiej mu zrozumieć, jakie kompromisy musi podjąć.
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ę. Jeśli można by było wyświetlać prośby o dostęp wielokrotnie, strony o złośliwych zamiarach mogłyby bombardować użytkowników tymi prośbami. Dlatego przywrócenie zablokowanej funkcji wymaga od użytkownika świadomego działania. Dlatego unikaj proszenia użytkowników o pozwolenie w sytuacjach, w których wielu z nich prawdopodobnie nie zezwoli na dostęp.
Najczęstszym sposobem jest użycie tzw. promptu wstępnego, w którym wyjaśniasz użytkownikom, co się zaraz stanie i dlaczego aplikacja potrzebuje dostępu do funkcji, o którą prosisz. Prośbę o uprawnienia w przeglądarce należy wyświetlać tylko wtedy, gdy użytkownicy zareagują na prośbę wstępną. W niektórych sytuacjach użytkownicy mogą potrzebować pomocy w odzyskaniu danych. Więcej informacji znajdziesz w sekcji Pomaganie użytkownikom w przywróceniu dostępu po zablokowaniu.
Zwróć uwagę na treści innych firm
Pamiętaj, że prośby o uprawnienia mogą pochodzić z nieoczekiwanego źródła. Jeśli w swojej witrynie używasz skryptów innych firm, mogą one wywoływać prośby o zgodę, 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, dokładnie przeczytaj dokumentację bibliotek i skryptów innych firm, które dodajesz do własnego kodu.
Kiedy poprosić o zgodę
Oto kilka przykładów sytuacji, w których warto poprosić o pozwolenie, stosując sprawdzone metody:
- Gdy użytkownik kliknie przycisk „Użyj mojej lokalizacji” obok pola formularza, aby ręcznie wpisać adres.
- Gdy użytkownik zasubskrybuje kanał wideo lub post i kliknie przycisk potwierdzający 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 dotyczące prośby o uprawnienia
Uzyskanie uprawnień do korzystania z interfejsu API odbywa się na różne sposoby w zależności od interfejsu API. Niektóre interfejsy API (zwykle starsze) korzystają z modelu, w którym przeglądarka automatycznie prosi o pozwolenie przy pierwszym użyciu interfejsu API. Przykładem może być wywołanie interfejsu Geolocation API w przypadku interfejsu navigator.geolocation.getCurrentPosition()
.
try {
navigator.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
console.error(error);
}
Inne interfejsy API korzystają z modelu, w którym musisz najpierw wyraźnie poprosić o pozwolenie, używając 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 do określonych interfejsów 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 korzystać z danego interfejsu API, użyj metody navigator.permissions.query()
z interfejsu API dotyczącego uprawnień.
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.
}
Pomoc użytkownikom w przywracaniu dostępu po zablokowaniu
Aby pomóc użytkownikom rozwiązać problemy z dostępem, wykryj, że zablokowali dostęp za pomocą interfejsu API uprawnień, i zaproponuj im przewodnik dotyczący zmiany ustawień. Jeśli na przykład użytkownicy korzystają z elementów interfejsu, które są powiązane z funkcją wymagającą 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ę „zegara” po lewej stronie paska adresu. Tutaj może włączyć odpowiednie uprawnienia. W niektórych przypadkach przed skorzystaniem z tej funkcji może być konieczne ponowne załadowanie strony. W takim przypadku u góry okna pojawi się pasek z komunikatem z prośbą o ponowne załadowanie.
Podobne interfejsy do zarządzania uprawnieniami są dostępne w innych przeglądarkach (zobacz, jak to działa w Firefoxie).