Détruire les cookies dans les rails, connectez facebook, plugin Facebooker

voix
4

J'ai donc en quelque sorte une situation bizarre se passe. J'utilise le plugin Facebooker pour rails où je veux que les utilisateurs puissent se connecter et déconnecter avec leur profil facebook. Cependant, une fois que les utilisateurs se déconnectent, si j'actualisez la page, il les enregistre avant. Ceci est seulement lorsque les utilisateurs se connectent avec facebook connecter.

Je pense que le problème est qu'un cookie escroc est tout simplement ré-instancier la session et donc ma meilleure estimation est de détruire manuellement les cookies, mais pour être honnête, je ne suis pas tout à fait sûr de la façon de le faire. J'ai imprimé ma liste des cookies (de Request.Cookies) avant et après que je clique sur fermeture de session. Après déconnexion est cliqué, j'ai encore ce cookie ... persistante mais ne sais pas comment le supprimer.

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

Après avoir joué avec un peu plus, ce cookie est même pas là ... mais sur rechargeant la page Je suis reconnecté.

Je fais tout cela sur localhost ... pas sûr si cela causer un problème ou non.

Des idées?

Créé 21/05/2009 à 19:44
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
3

Les cookies locaux est la destruction ne suffit pas de mettre fin à une session Facebook Connect. La bibliothèque de connexion JS recréera les cookies détruits aussi longtemps que vous avez encore une session active sur le domaine facebook.com - et ces cookies sont inaccessibles pour vous.

Tous les journaux d'impression doivent être traitées en appelant la fonction de déconnexion dans la bibliothèque de connexion.

par exemple,

<script>$H.fbconnect.logout();</script>
Créé 21/05/2009 à 21:16
source utilisateur

voix
0

Pour supprimer un cookie, vous devez définir à nouveau le cookie avec une date d'expiration dans le passé.

Créé 22/05/2009 à 18:15
source utilisateur

voix
6

Voilà ce que j'ai dans le contrôleur des utilisateurs

  def logout_facebook
    clear_facebook_session_information
    redirect_to root_url
  end

et voilà comment il est déclenché

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

Voilà comment je suis arrivé à supprimer les cookies du côté local.

Remarque: ne pas oublier d'ajouter une route à la méthode logout_facebook dans vos itinéraires.

Créé 19/10/2009 à 18:21
source utilisateur

voix
0

un million grâce à la solution propre et la preuve complète à une telle fonctionnalité. éreintante J'ai littéralement plus de 2 Blank vais semaines depuis que je suis tombé sur le fait vrai, je crois que presque tous les utilisateurs NEW-Facebooker, « facebook connecter vous déconnecter complètement ». Ou peut-être juste c'était juste un manque de documentation ou d'un extrait de code que je n'ai pas pu trouver jusqu'à ce jour dans la couverture de Facebooker docs.

Quoi qu'il en soit loin de tout cela, de passer à la solution qui m'a fait parvenir ... Suite à la méthode B ci-dessus @ James.


Évidemment , je suppose que vous avez tous lu l' installation de Facebooker, des instructions de configuration et utilisation http://github.com/mmangino/facebooker . J'ai aussi utilisé un plug - in « authlogic_facebook_connect » que vous pouvez trouver à github.com page de kalasjocke / authlogic_facebook_connect.

Maintenant, je suppose que vous avez déjà configuré votre application pour travailler avec facebook connecter à l'aide fb_login_button ou authlogic_facebook_login_button. En cliquant dessus, vous verriez un popup pour vous connecter à la fois votre compte Facebook et dans le compte local de votre application. Une fois que vous vous connectez, vous seriez obtenir un facebook_session pour gérer l'enregistrement d'un nouvel utilisateur dans votre base de données (uniquement si vous souhaitez).

Par défaut, vous seriez pas obtenir d'anniversaire et l'adresse e-mail des utilisateurs dans le facebook_session comme réponse de facebook. Pour les obtenir, vous besoin de quelque chose comme ceci dans votre initialisation javascript dans la balise body de la page RHTML ...

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

Maintenant, enfin, ce que je l'ai fait pour se connecté sur Facebook et mon site.

  1. A l'intérieur l'en-tête de votre application ou chaque fois que le LOGIN, LOGOUT, le nom etc des utilisateurs loggedIn affiche ...

    : Supprimer%>

Les deux boutons sont pour différentes déconnexion types d'utilisateurs .. a. qui se sont inscrits directement sur votre site, b. qui Registerd sur votre site via facebook

  1. Route pour logout_both à routes.rb

map.connect "/ logout_both",: controller => "utilisateurs",: action => "logout_both"

  1. L'action pour logout_both intérieur users_controller.rb

    def logout_both current_user_session.destroy #clear_facebook_session_information flash [: avis] "! Déconnexion réussie" = redirect_to root_path extrémité #End de la méthode logout_both

  2. Vous devez vous assurer qu'il n'y a pas de filtres définis dans le contrôleur qui pourrait limiter l'action logout_both à exécuter sans une session.

  3. Ah oui, et si vous vous demandez pourquoi ce « clear_facebook_session_information » est commenté dans l'action. Alors ne vous inquiétez pas, vous êtes déjà connecté sur facebook avant d'entrer dans cette action, cette ligne n'est plus nécessaire. Patron nous utilisons « fb_logout_link » qui connecte d'abord vous et ensuite vous redirige vers cette nouvelle action.

Eh bien, c'est à ce sujet. Si cela ne le fait pas ........ se salir vos mains comme je le fais .. creuser .. résoudre vous-même. Facebooker est profonde, mais a une fin définitive !!!

Encore une fois un grand merci à Mangino & kalasjocke pour faire connecter facebook presque pas douloureux pour rails.


Un peuple de clarification ... dans ma réponse ci-dessus .. Il y a un plouc, qui est .. Après fermeture de session, si vous actualisez la page .. il montrerait à nouveau vous connecté sur votre site .. mais vous sont bien déconnecté de Facebook. Je me suis trompé, UNE GRANDE CLARIFICATION ...... En fait, vous avez besoin d'CES DEUX LIGNES DE VOTRE « logout_both » l'action

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
Créé 24/07/2010 à 11:15
source utilisateur

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