Wer Gefällt mir– oder +1-Buttons direkt in seine Website einbindet, verstößt dabei wohl gegen geltendes Datenschutzrecht. Denn selbst wenn man in seinen Datenschutzrichtlinien über die Buttons informiert, so werden sie ja automatisch sofort geladen, bevor der Besucher den Text überhaupt lesen konnte. Und da die Buttons direkt von Facebook & co. geladen werden, können diese damit wunderbar ein digitales „Bewegungsprofil“ ihrer Nutzer und Nichtnutzer erstellen.
Eine beliebte Alternative sind Lösungen wie die von Heise ins Leben gerufene Shariff-Bibliothek. Hier wird die Verbindung zum sozialen Netzwerk erst hergestellt, nachdem der Benutzer einmal geklickt hat. Leider bietet Shariff von sich aus keine Unterstützung für Gefällt mir– und +1-Buttons, sondern es erlaubt lediglich das Teilen. Die ebenfalls von Heise entwickelte Zwei-Klick-Lösung SocialSharePrivacy ist mittlerweile auch schon arg angestaubt und hat den Nachteil, dass die aktuelle Anzahl von „Likes“ nicht angezeigt werden kann.
Ich wollte daher eine eigene Alternative entwickeln. Mein Ansatz ist derselbe wie bei SocialSharePrivacy: Der Benutzer sieht zunächst eine „ausgegraute“ Version des Buttons, bei der es sich nur um ein Bild handelt, das vom eigenen Server ausgeliefert wird. Ein kleiner Hinweis informiert darüber, dass der Button mit dem ersten Klick aktiviert und mit dem zweiten Klick bedient wird. Bei erfolgtem Klick wird das Bild durch den tatsächlichen Button ersetzt, beispielsweise mit Hilfe eines iframe
-Elements.
Die Platzhaltergrafiken für die Buttons sollten bereits die aktuelle Anzahl von „Likes“ enthalten, daher scheidet ein manuelles Anfertigen dieser Grafiken aus. Und genau hier hat sich PhantomJS wieder einmal als ein hervorragendes Tool bewiesen. Mit nur ein paar Zeilen JavaScript kann der echte Button von Facebook/Google in einem „virtuellen Browser“ geladen und als Screenshot abgespeichert werden. Ein bisschen Nachbearbeitung mit ImageMagick sorgt dann für einen ausgegrauten/unscharfen Look. Die Aktualisierung der Platzhaltergrafiken erfolgt mittels Cronjob automatisch einmal pro Stunde, bei Bedarf auch öfter oder seltener.