2011-08-29 11 views
10

Pracuję nad aplikacją Facebooka, która jest zintegrowana z Facebookiem i próbuję uzyskać sesję FB użytkownika. O ile rozumiem, wspólny scenariusz użycia jest następujący.FB.getLoginStatus nie uruchamia się, jeśli użytkownik nie jest zalogowany na Facebooku

  1. wezwanie FB.init()
  2. wezwanie FB.getLoginStatus nadając mu odpowiednią zwrotnego.

Uruchomiłem następujący kod (identyfikator aplikacji).

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    <!-- 

    function init(){ 
     FB.init({ 
      appId : '9999999999999', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true, // parse XFBML 
      channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel 
      oauth : true // enable OAuth 
     }); 
     alert('going to call FB.getLoginStatus '); 

     FB.getLoginStatus(function(response) { 
      alert('whoo hoo!!! getLoginStatus called the callback'); 
     }); 
    } 
    init(); 
    //--> 
</script> 

Jeżeli użytkownik jest już zalogowany do Facebooka w tej samej sesji przeglądarki, a następnie wszystko działa zgodnie z oczekiwaniami - powrót zaludnionych _response.authResponse_. Jeśli jednak użytkownik nie jest zalogowany na Facebooku, wywołanie zwrotne nie jest w ogóle uruchamiane. Sprawdzając dziennik sieci przeglądarki, widzę, że Facebook zwraca następującą odpowiedź (żądanie od http://www.facebook.com/dialog/oauth?).

Application Error: There was a problem getting data for the application you requested. The application may not be valid, or there may be a temporary glitch. Please try again later.

Sprawdziłem to w Chrome i Firefox (Mac).


Aktualizacja

Chciałbym podziękować wszystkim, którzy odpowiedzieli.

Ben - komentarz miał odpowiedź.

Dzięki Ben - oszczędziłeś mi wiele frustracji.

+12

Czy Twoja aplikacja działa w trybie piaskownicy? Jeśli tak, wydaje się, że jest to błąd, który może spowodować to: http://bugs.developers.facebook.net/show_bug.cgi?id=19359 –

+0

Czy używasz channelUrl jako sprzężenia zwrotnego, czy jest to tylko dla próbki? Nie wierzę, że sprzężenie zwrotne będzie działać dla tej funkcji. –

+0

użycie channelUrl zostało wyjaśnione [tutaj] (https://developers.facebook.com/docs/reference/javascript/FB.init/). najwyraźniej powinno to przyspieszyć czas ładowania i pomóc uniknąć kilku problemów. nie obchodzi mnie, czy coś robi, gdy się rozwijam, powinien pomóc, gdybym poszedł na żywo. –

Odpowiedz

11

Przyczyną jest niedawna bug, która dotyczy tylko trybu piaskownicy. Wyłączyłem tryb piaskownicy i działało jak czar.

+1

Mogę cię pocałować! Dziękuję Ci bardzo. Spędziłem WSZYSTKĄ noc próbując i próbując rzeczy ... Nie rozumiałem, co się stało ... Dobra robota Facebook. 6 miesięcy po, problem nadal pozostaje ... –

+1

Link jest już martwy. –

0

spróbuj wymusić ładowanie wydarzenie:

FB.getLoginStatus(function(response) { 
    alert('whoo hoo!!! getLoginStatus called the callback'); 
}, true); 

To jest zawarta w FB.getLoginStatus.

Zdarzenie może nie zostać wywołane w niektórych sytuacjach.

+0

wypróbował ten jeden, bez radości –

+0

Dodanie true, aby wymusić ładunek rozwiązany problem braku odpowiedzi dla mnie! –

Powiązane problemy