2011-08-13 9 views
13

Naprawdę nie rozumiem, dlaczego musimy utworzyć plik channel.html, o czym wspomniał FB docs. Chcę również zrozumieć, w jaki sposób jest używany. W moich dziennikach nie widzę, aby ten plik był kiedykolwiek żądany.Dlaczego musimy utworzyć plik channel.html na naszym serwerze, aby używać pakietu Facebook JS SDK?

+1

W dokumentach FB, które łączysz - pierwszy przykład w "Sprawdzonych metodach" podaje kilka powodów, dla których zaleca używanie niestandardowego kanału.html – Jacksonkr

+3

Tak, ale nie rozumiem tego w ogóle. Potrzebuję bardziej złożonego wyjaśnienia, aby to zrozumieć. – AppleGrew

+4

Szczerze mówiąc, tak naprawdę to też nie rozumiem. Wydaje mi się, że kiedy już coś wymyślisz z deweloperem FB, zmienią to na ciebie i nie powiedzą ci, dlaczego i jak to naprawić. – Jacksonkr

Odpowiedz

13

Plik kanału ma na celu zapewnienie sposobu komunikacji między serwerami FB i własnym. Powodem tego jest ich ścisła kontrola nad tokenami dostępu. Musisz uwierzytelnić przekierowanie i identyfikator aplikacji, aby pobrać ten token dostępu. Aby przekazać Tobie token, trafili Twój URL z tokenem dostępu w haszsie. Przy adresie URL kanału przekazują ten token sobie (JavaScript działający w domenie).

Ten plik kanału może następnie przekazać token dostępu do aktywnej strony.

Aby zachować wszystkie te rzeczy tylko dla swojej domeny, potrzebują czegoś, co działa w każdej przeglądarce. Obecnie jest to hack tworzenia wyskakujących okienek, które nie są dostępne dla javascript na twoim serwerze.

3

Mam nadzieję, że to pomoże.

https://developers.facebook.com/docs/reference/javascript/FB.init/

Od doc:

Jest to opcja, która może pomóc w rozwiązaniu trzy konkretne znane problemy. Po pierwsze, podczas automatycznego odtwarzania audio/wideo użytkownik może usłyszeć dwa strumienie audio, ponieważ strona została załadowana po raz drugi w tle w celu komunikacji między domenami. Po drugie, jeśli masz kod pomijania ramek, zobaczysz pustą stronę. Po trzecie, uniemożliwi to uwzględnienie dodatkowych działań w dziennikach po stronie serwera. W tych scenariuszach możesz podać opcjonalny parametr channelUrl: