2011-09-09 8 views
5

Próbuję umożliwić użytkownikom umieszczanie postów na swoich ścianach Facebooka w mojej witrynie zewnętrznej.FB.ui() podając błąd w Safari z asynchronicznym żądaniem, gdy użytkownik nie jest jeszcze zalogowany

Znalazłem problem w Safari. Jeśli użytkownik nie jest zalogowany, tzn. Nie przeszedł przez przepływ wywołujący funkcję FB.login(), pojawia się następujący błąd JS podczas wywoływania FB.ui():

TypeError: 'undefined' nie jest obiekt (oceniający "b.fbCallID = a.id")

Jednakże, jeśli są one zalogowane, okno dialogowe wygląda dobrze.

Funkcja FB.ui() wywoływana jest w funkcji wywołania zwrotnego - pobieram unikalny adres URL z mojego serwera, a następnie wywołuję funkcję FB.ui(). Jeśli zadzwonię bezpośrednio do FB.ui(), to działa dobrze, ale nie wtedy, gdy jest asynchroniczne.

Oto kod:

 retrieveUrl(param1, param2, function(result) { 
      FB.ui({ method: 'feed', 
        description: 'My Description', 
        display: 'dialog', 
        link: result.uniqueUrl, 
        picture: 'http://foo.com/bar.jpg' 
      }, function(response) { 
       if (response && response.post_id) { 
        //Posted message 
       } else { 
        //Not posted message 
       } 
      }); 
     }); 

To działa w innych przeglądarkach, niezależnie od stanu zalogowany czy nie.

+0

Widzę ten sam problem ... – DuckMaestro

Odpowiedz

4

Metody FB.login lub FB.ui muszą być wywoływane w przypadku akcji zainicjowanej przez użytkownika (kliknięcie) w przeglądarce Safari, aby nowe okno/wyskakujące okienko lub element iframe były renderowane przez FB.UIServer.

Jeśli spróbujesz nazywając tych metod na razie zwrotnego sieci zostanie zablokowane, a wyjątkiem opisałeś wystąpią:

TypeError: „niezdefiniowane” nie jest przedmiotem (oceny „b.fbCallID = a.id ')

Czy możesz pobrać unikalny adres URL zanim użytkownik wejdzie w interakcję ze stroną, a następnie po kliknięciu przycisku wyświetla okno dialogowe kanału?

+0

Nie, zdecydowanie nie mogę. Najpierw potrzebuję mojego serwera do wygenerowania unikalnego kodu. Po prostu wykonałem przekierowanie zamiast używać FB.ui(), więc jest w porządku. – pricklypear

+0

Czy możliwe jest wygenerowanie unikalnego kodu ze stroną? Meh. Przekieruj z dala! – funrob

Powiązane problemy