Problematyka działania modułów facebook w PrestaShop

Klient spotkał się z konfliktem między biblioteką customerchat.js (moduł messengera) oraz biblioteką all.js (moduł logowania facebook). Poniżej opisana została problematyka i sposób rozwiązania problemu.

two widgets in one module facebook messenger

Witam,
Problem bibliotek jest bardziej złożony a wynika on bezpośrednio z "bałaganu" jaki panuje na platformie developerskiej facebook. O tym poniżej.

Wszystkie z integracji z facebook - począwszy od prostych widgetów jak np likebox, po messengera, czy bardziej wymagające integracje pobierające dane z API facebook (np. logowanie facebook) do swojego działania wymagają odpowiednich bibliotek ładowanych z domeny "connect.facebook.net". Facebook posiada kilka bibliotek, których stosowanie zależne jest od celów, jakie chcemy osiągnąć. I co najważniejsze - do strony możemy załadować wyłącznie jedną bibliotekę - gdy załadujemy ich więcej - to integracje będą działały częściowo, nie będą działać poprawnie lub nie będą działać wcale. (Dochodzi wtedy do konfliktu o którym Pan wspomniał).

Zestawienie bibliotek i możliwości, jakie one oferują:
biblioteka facebookWidgety (np. likebox, pagechat)Messenger chatFacebook api (facebook login)
all.js
all.js + appID
sdk.js
sdk.js + appID
customerchat.js
customerchat.js + appID

I tak - w kontekście Pana problemu:
  • gdy w module "logowania facebook" włączy Pan ładowanie biblioteki facebook - ładowana jest biblioteka all.js z numerem appID (drugi wiersz w tabeli)
    Jak wynika z powyższej tabeli - biblioteka pozwala na korzystanie z widgetów oraz z facebook api. Natomiast już z messengera nie.Dlatego też w tym przypadku nie jest możliwe aby zainicjowany został Messenger Chat.
  • Natomiast gdy załadowany zostanie zwykły customerchat.js (bez appID) - wówczas będzie działał tylko chat messengera, proste widgety jak np. likebox czy wymiana danych z api nie będą działać poprawnie (To jest ten konflikt o którym Pan wspomniał).

Jak wynika z powyższej tabeli - najbardziej rozbudowaną biblioteką oferującą komplet integracji jest customerchat.js + appID. Oznacza to tyle, że jeżeli chce Pan korzystać jednocześnie z logowania facebook oraz messengera to trzeba by było załadować tę bibliotekę.

Dlatego najlepszym rozwiązaniem będzie:
wyłączenie ładowania biblioteki facebook w module facebook login (wówczas all.js + appID nie będą ładowane)
- w module "messenger chat" (nie wiem z jakiego rozwiązania Pan korzysta) należy pozostawić bibliotekę customerchat.js oraz dodatkowo wyposażyć ją w numer aplikacji appID 

Tylko wtedy będzie mógł Pan korzystać ze wszystkich możliwości integracji facebook - począwszy od messengera - aż po wymianę danych z API facebook (logowanie facebook).

To właśnie z tych powodów opisanych powyżej, gdy zdecyduje się Pan na zakup jakiegoś modułu facebook - warto zwrócić uwagę aby oferował on włączanie / wyłączanie ładowania bibliotek facebook oraz miał możliwość definiowania numerów appID. Pozwoli to uniknąć sporo problemów z działaniem różnych integracji facebook

0 komentarze:

Publikowanie komentarza