Distruggi i cookie in rotaie, Facebook Connect, plug facebooker

voti
4

Così ho una sorta di strana situazione in corso. Sto usando il plugin Facebooker per le rotaie dove voglio che gli utenti siano in grado di effettuare il login e il logout con i loro profili di Facebook. Tuttavia, una volta che gli utenti logout, se mi aggiorna la pagina, li registra di nuovo. Questo è solo quando gli utenti log-in con Facebook connect.

Credo che il problema è che un cookie canaglia è solo ri-istanziare la sessione e così il mio migliore ipotesi è quella di distruggere manualmente i cookie, ma ad essere onesti non sono del tutto sicuro di come fare questo. Ho stampato la mia lista dei cookie (da Request.Cookies) sia prima che clicco il logout dopo. Dopo il logout viene cliccato, ho ancora questo cookie persistente ... ma non so come eliminarlo.

fbsetting_0b78c8f2c95ce671470bdcb1c19e5070 { connectState: 1, oneLineStorySetting: 1, shortStorySetting: 1, inFacebook: false}

Dopo aver giocato intorno con esso un po 'di più, il cookie non è nemmeno lì ... ma su di aggiornare la pagina sono entrato di nuovo in.

Sto facendo tutto questo su localhost ... non so se questo dovrebbe causare un problema o meno.

Qualche idea?

È pubblicato 21/05/2009 alle 19:44
fonte dall'utente
In altre lingue...                            


4 risposte

voti
3

Distruggere i cookie locali non è sufficiente per terminare una sessione Facebook Connect. La libreria JS connect ricreerà distrutto i biscotti fino a quando si dispone ancora di una sessione attiva sul dominio facebook.com - e quei biscotti sono inaccessibili a voi.

Tutti i log-out devono essere gestiti chiamando la funzione di logout nella libreria di collegamento.

per esempio,

<script>$H.fbconnect.logout();</script>
Risposto il 21/05/2009 a 21:16
fonte dall'utente

voti
0

Per eliminare un cookie, è necessario impostare di nuovo il cookie con una data di scadenza nel passato.

Risposto il 22/05/2009 a 18:15
fonte dall'utente

voti
6

Questo è quello che ho in controller di utenti

  def logout_facebook
    clear_facebook_session_information
    redirect_to root_url
  end

e questo è il modo in cui viene attivato

<%= fb_logout_link("Logout out", "#{root_url}users/logout_facebook")%>

Questo è come ho ottenuto per rimuovere i cookie sul lato locale.

Nota: non dimenticate di aggiungere un percorso al metodo logout_facebook nei vostri percorsi.

Risposto il 19/10/2009 a 18:21
fonte dall'utente

voti
0

un milione di grazie per la soluzione pulita e la prova completa per una funzionalità come esausto. Sono stato letteralmente andando in bianco sopra ultime 2 settimane da quando ho incontrato il fatto fedele al credo quasi tutti gli utenti NEW-Facebooker, "Facebook Connect logout completamente". O forse solo era solo una mancanza di documentazione o qualche codice brano non è stato in grado di trovare fino ad oggi nei documenti di copertura facebooker.

In ogni caso lontano da tutto ciò che, spostandosi verso la soluzione che mi ha fatto realizzarlo ... Seguendo il metodo @James B di cui sopra.


Ovviamente io parto dal presupposto che tutti avete letto di installazione facebooker, configurazione e utilizzo istruzioni http://github.com/mmangino/facebooker . Ho anche usato un plugin "authlogic_facebook_connect", che potete trovare a github.com pagina del kalasjocke / authlogic_facebook_connect.

Ora presumo che già configurato l'applicazione per lavorare con Facebook Connect utilizzando fb_login_button o authlogic_facebook_login_button. Clic su di esso si vedrebbe un popup qui il log-in sia il tuo account facebook e sul conto locale della vostra applicazione. Una volta che si effettua il login devi essere sempre un facebook_session per gestire il salvataggio di un nuovo utente nel DB (solo se si desidera).

Per impostazione predefinita, non piacerebbe essere sempre il compleanno e l'indirizzo email degli utenti nel facebook_session come risposta da facebook. Per farli avete bisogno di qualcosa di simile nel tuo inizializzazione javascript nel tag body della pagina rhtml ...

<%= fb_connect_javascript_tag %>   <%=
init_fb_connect "XFBML",{
:app_settings=>" {
permsToRequestOnConnect :
'email,user_birthday' }"} %>
<%= authlogic_facebook_login_button %>

Ora finalmente quello che ho fatto per ottenere disconnesso sia Facebook e il mio sito.

  1. All'interno l'intestazione della vostra applicazione o dovunque il login, logout, nome ecc loggedin di utenti mostrerà ...

    : Eliminare%>

I due pulsanti sono disconnessione per diversi tipi di utenti .. a. che ha registrato direttamente sul tuo sito, b. che registrati al tuo sito tramite facebook

  1. Percorso per logout_both in routes.rb

map.connect "/ logout_both",: Controller => "utenti",: action => "logout_both"

  1. L'azione per logout_both all'interno users_controller.rb

    def logout_both current_user_session.destroy #clear_facebook_session_information Flash [: Avviso] "! Logout di successo" = fine redirect_to root_path #End metodo logout_both

  2. È necessario assicurarsi che non ci siano filtri definiti nel dispositivo di controllo che potrebbe limitare l'azione logout_both da eseguire, senza una sessione.

  3. Oh sì, e se vi state chiedendo perché che "clear_facebook_session_information" è commentato nell'azione. Quindi non ti preoccupare, hai già effettuato l'accesso da Facebook prima di entrare in questa azione, non è più necessaria questa linea. Boss stiamo usando "fb_logout_link", che accede per la prima fuori e poi reindirizza a questa nuova azione.

Beh, questo è tutto. Se questa non lo fa ........ sporcarsi le mani come sto facendo .. scavare dentro .. risolverli autonomamente. Facebooker è profondo, ma ha un preciso FINE !!!

Anche in questo caso molte grazie a Mangino & kalasjocke per rendere Facebook Connect quasi dolorosa per rotaie.


Un popolo di chiarimento ... nella mia risposta sopra .. C'è un provinciale, che è .. Dopo il logout, se si aggiorna la pagina .. mostrerebbe ancora una volta si effettuato l'accesso sul tuo sito .. tuttavia si è registrato con successo di Facebook. Mi sbagliavo, UN GRANDE CHIARIMENTO ...... È un dato di fatto si ha bisogno queste due linee nel vostro "logout_both" azione

def logout_both <br/>
      current_user_session.destroy<br/>
      clear_facebook_session_information  #MANDATORY TO COMPLETELY CLEAR COOKIES<br/>
      reset_session  # TO BE 100% sure you can use it optionally<br/>
      flash[:notice] = "Logout successful!"<br/>
      redirect_to root_path   <br/>
end
Risposto il 24/07/2010 a 11:15
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more