2011-01-26 22 views
8

mogę użyć tego koduFacebook przycisk wylogowania i przekierowanie po wylogowaniu

<fb:login-button autologoutlink="true" perms="user_likes" size="large"></fb:login-button> 

utworzyć przycisk fb logowania/wylogowania. Wszystko działa, po zalogowaniu przycisk logowania staje się przyciskiem wylogowania. Ale jeśli użytkownik kliknie przycisk wylogowania, bieżąca strona nie zostanie odświeżona, a wszystkie rzeczy, które powinny pojawić się tylko wtedy, gdy użytkownik jest uwierzytelniany, pozostają tam do czasu ręcznego odświeżenia strony.

nie stanie, jeśli mam url wylogowania (JavaScript SDK)

$logoutUrl = $facebook->getLogoutUrl(); 

a następnie wdrożyć przycisku Wyloguj się; w takim przypadku przekazywany jest właściwy "następny" parametr (z adresem URL bieżącej strony) i aktualna strona jest ponownie ładowana.

Nadal chciałbym skorzystać z pierwszego rozwiązania, czy możliwe jest użycie parametru "następny"?

+0

@Piskvor próbowałem tego, ale nie pomaga tak daleko http://facebook.stackoverflow.com/questions/8066589/when-i-hit-logout-button-i-want-to-run- a-javascript-function –

Odpowiedz

14

Czy przekierowanie siebie - dodać do JavaScriptu, gdzieś po FB.init():

<script> 
    FB.Event.subscribe("auth.logout", function() {window.location = '/logout'}); 
</script> 

Funkcja ta zadziała podczas wylogowania za pomocą przycisku FB dzieje.

+0

Działa doskonale, wielkie dzięki. Powinienem był zauważyć, że w moim przykładowym kodzie był już aFB.Event.subscribe ('auth.login', function() {window.location.reload()}); dla części logowania. Zrobić to samo dla wylogowania jest właściwą drogą. – Eugenio

+1

@Eugenio: Nie ma za co. Robiłem dokładnie to samo kilka miesięcy temu, zakładam, że jest to dość powszechny problem :) – Piskvor

+0

Jesteś mężczyzną. Spędziłem kilka dni szukając tej odpowiedzi. – WitnessTruth

1

Powyższa odpowiedź autorstwa Piskvova zrobiła to za mnie. To szalone, ile godzin spędziłem próbując to rozgryźć.

Głównym problemem z wtyczkami takimi jak ta Facebook dla CakePHP jest to, że nie zawierają aktualizacji. Interfejsy API, szczególnie popularne, takie jak Facebook, cały czas się zmieniają, ponieważ są ważne. Jeśli facet, który napisał go początkowo jako hobby, kontynuuje swoje życie i przestaje aktualizować SDK, ludzie, którzy są mniej znani, jak zmienić te rzeczy, zostają zablokowani.

KODEKS PRACY:

Niemniej, dzięki za świetne rozwiązanie Piskvor, tu jest mój kawałek kodu dla

apps/plugins/facebook/views/helpers/facebook.php 

      $init .= $this->Html->scriptBlock(
<<<JS 

window.fbAsyncInit = function() { 
    FB.init({ 
     appId : '{$appId}', 
     session : {$session}, // don't refetch the session when PHP already has it 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true // parse XFBML 
    }); 
    FB.Event.subscribe("auth.logout", function() { 
     window.location = '/users/logout' 
    }); 
    {$callback} 
}; 

Kluczem kawałek kodu tutaj:

 FB.Event.subscribe("auth.logout", function() { 
     window.location = '/users/logout' 
    }); 
    {$callback} 
+0

Proszę nie dodawać "dziękuję" jako odpowiedzi. Zainwestuj trochę czasu na stronie, a zyskasz wystarczające [przywileje] (http://stackoverflow.com/privileges), aby pobudzić odpowiedzi, które lubisz, czyli sposób przepełnienia stosu mówiąc: dziękuję. – Jack

1

Dla zintegrowanego uwierzytelniania (Facebook + Asp.Net MVC), używam tylko JavaScript i FormsAuthentication.SignOut();

function LogoutFacebook() {  
FB.logout(function (response) { 
    window.location = "/facebook/logout/"; 
}); } 
Powiązane problemy