gpt4 book ai didi

ruby-on-rails - 使用 devise + omniauth + rails 3 时如何清除 facebook session 和 cookie?

转载 作者:行者123 更新时间:2023-11-30 05:29:41 26 4
gpt4 key购买 nike

我使用 facebook connect 使用 devise + omniauth on rails 3 实现了帐户创建和登录。但是,我的问题是在用户注销时清除 facebook session 和 cookie。当前,当用户注销时,似乎会清除当前 session 。但是,当用户再次登录时,由于 facebook cookie,它会自动让用户登录。我想要 sign_out 方法来清除 cookie,这样当用户下次尝试登录时,它会要求用户使用 facebook 登录。

现在我正在使用默认的设计路由“devise_for :users”。我应该通过创建“class SessionsController < Devise::SessionsController”来覆盖它吗?如果是这样,我是否需要同时编写创建和销毁方法?在 destroy 方法中,我如何完全清除 fb cookie(s)?

如有任何帮助,我们将不胜感激!

最佳答案

为了清除 FB session ,您必须使用 FB JS SDK。

所以,这就是我所做的。

首先,初始化 FB JS。我用了一个部分,但你可以把这个放在布局中

<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: '[APP_ID]',
status: true,
cookie: true,
xfbml: true});
};

(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>

然后,我将注销链接绑定(bind)到调用 application.js 中的 destroy_user_session_path 的 FB.logout 函数。

$(function() {
$('#logout').click(function(e) {
FB.logout(function(response) {
var url = $('#logout').attr('redirect_url');
$.ajax({
url: url,
type: 'DELETE',
success: function(msg) {
window.location = '/';
}
});
});
e.preventDefault();
});
});

我的 application.html.erb。

<% if user_signed_in? %>
<p><%= link_to "logout", "#", :id => "logout", :redirect_url => destroy_user_session_path %></p>
<p>Hi, <%= current_user.email %></p>
<% else %>
<p><%= link_to 'Login with Facebook', '/auth/facebook/' %></p>
<% end %>

关于ruby-on-rails - 使用 devise + omniauth + rails 3 时如何清除 facebook session 和 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com