Contacts Picker API: Kontakte-Zugriff für Progressive Web Apps

ÜberKreuz  –  25 Kommentare

Im modernen Web stehen viele sehr mächtige Schnittstellen zur Verfügung, die Webanwendungen Zugriff auf Funktionen erlauben, die man früher nur nativen Anwendungen zugerechnet hätte. Eine Schnittstelle, die dem Web bislang noch fehlte, ist eine API zum Zugriff auf das Adressbuch des Anwenders. Mit der Contacts Picker API befindet sich diese nun in Spezifikation.

Contacts Picker in Aktion

Die Schnittstelle befindet sich gerade im Entwurfsprozess bei der Web Incubator Community Group (WICG) des W3C; der API-Entwurf findet sich auf GitHub. Die Contacts Picker API erlaubt einen eingeschränkten, lesenden Zugriff auf das Adressbuch des Anwenders: Der Anwender kann einen oder mehrere Kontakte auswählen, deren Daten (wahlweise Name, Telefonnummern und/oder E-Mail-Adressen) mit der Website geteilt werden sollen. Nützlich ist diese Schnittstelle etwa für E-Mail-Clients, soziale Netze und andere Anwendungen, die Zugriff auf Kontaktdaten Dritter benötigen.

Die Contacts Picker API erweitert die Navigatorschnittstellen

Als Teil der Project-Fugu- beziehungsweise Capabilities-Schnittstellen wird die Contacts Picker API ab Google Chrome 77 für Android (erscheint im September) erstmals für ein begrenztes Publikum bereitgestellt. Das Vorhandensein der Schnittstelle kann wie folgt geprüft werden. Steht die API nicht zur Verfügung, müssen Anwendungen die Kontaktdaten auf einen anderen Weg einholen, etwa per HTML-Formular.

if ('contacts' in navigator && 'ContactsManager' in window) {
requestContacts();
}

Steht die Schnittstelle zur Verfügung, kann auf dem ContactsManager (unter navigator.contacts) die Methode select() aufgerufen werden. Diese nimmt zwei Parameter entgegen: Einmal eine Auflistung der gewünschten Kontakteigenschaften (derzeit name für den Namen, email für E-Mail-Adressen und tel für Telefonnummern) sowie optional ein Konfigurationsobjekt, über das derzeit allein die Mehrfachauswahl von Kontakten angefordert werden kann.

const contacts = await navigator.contacts.select(['name', 'email', 'tel'], { multiple: true });
Rückgabe der Contacts Picker API

Daraufhin erscheint die Benutzeroberfläche des Contacts Picker. Die Methode gibt bei Aufruf ein Promise zurück, das mit der Liste der gewählten Kontakte auflöst, sobald der Anwender die Kontaktauswahl bestätigt. Bricht der Anwender den Auswahldialog ab, wird eine leere Liste zurückgegeben. Sind die Kriterien zur Anzeige des Dialogs nicht erfüllt, wird das Promise abgewiesen.

Datenschutz steht im Fokus

Die Kontaktauswahl kann nur als Ergebnis einer Benutzerinteraktion, also eines Klicks auf eine Schaltfläche oder nach einem Tastendruck ausgelöst werden. Das verhindert das automatische Öffnen der Benutzeroberfläche ohne Zutun des Anwenders. Darüber hinaus muss die Website über eine gesicherte Verbindung (HTTPS) ausgeliefert werden, und der Aufruf darf nur aus dem Top-Level-Browsingkontext, also etwa nicht aus einem IFrame heraus geschehen.

Außerdem steht der Datenschutz des Anwenders im Fokus: Die Contacts Picker API erlaubt keinen vollständigen Zugriff auf das Adressbuch des Anwenders, sondern nur auf die ausgewählten Kontakte. Apps können also nicht das komplette Adressbuch des Anwenders auswerten. Unterstützt werden derzeit nur Name, E-Mail-Adressen und Telefonnummern – nicht etwa Geburtsdaten oder postalische Adressen. Der Anwender kann sich auch dafür entscheiden, nicht alle angeforderten Kontaktdetails mit der Website zu teilen. Es ist derzeit kein manipulierender Zugriff möglich, sondern ein rein lesender. Ebenso kann die Erlaubnis des Anwenders nicht persistiert werden: Sollen dieselben Kontakte wieder geteilt werden, müssen diese abermals über die Benutzeroberfläche ausgewählt werden.

Noch können nicht alle Websites auf die neue API zugreifen. Getreu des Google-Prozesses zur Bereitstellung neuer Webschnittstellen wird die Schnittstelle zunächst über die sogenannte Origin-Trial verfügbar gemacht. Webentwickler können ein Token beziehen, das die Verwendung der API unterhalb einer Origin (Kombination aus Protokoll, Hostnamen und Port) zu Testzwecken erlaubt.

Optional kann die grundsätzliche Verwendung der API über chrome://flags aktiviert werden, die Einstellung heißt dort #enable-experimental-web-platform-features. Die Origin-Trial für die Contacts Picker API beginnt mit Google Chrome für Android in Version 77 und verbleibt dort voraussichtlich bis Version 80. Mit Chrome Beta unnd Chrome Canary kann die Schnittstelle schon heute ausprobiert werden, zum Beispiel über die Demoseite zur API. Das Chrome-Team ruft Entwickler dazu auf, ihr Feedback zur Schnittstelle etwa über das Forum der WICG mitzuteilen.