你如何使用设计清除Rails 3应用程序中的Twitter会话

时间:2012-04-27 22:59:10

标签: ruby-on-rails-3 twitter devise omniauth logout

我在rails 3 app中使用了devise,omniauth,omniauth-twitter和twitter gems。我想这样做,当用户注销时它也删除了twitter gem配置。当我说“twitter gem configuration”时,我指的是:

Twitter.configure do |config|
  config.consumer_key = YOUR_CONSUMER_KEY
  config.consumer_secret = YOUR_CONSUMER_SECRET
  config.oauth_token = YOUR_OAUTH_TOKEN
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

如果我不这样做而另一个用户从同一台计算机登录该应用程序但没有用户帐户,他们将看到以前用户的推特信息。我相信我可以通过调用

删除配置
Twitter.reset

我想我的问题是哪个地方最适合放的地方?此外,如果这不是删除用户的Twitter配置的最佳方式,我该怎么办?

如果您需要更多详细信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

您可以将配置拆分为特定于应用程序(将是全局的)和特定于客户端的设置。 This twitter gem wiki page很好地描述了这一点。

答案 1 :(得分:0)

这似乎有效。

/app/controllers/application_controller.rb中,您可以重定向默认路由设备,在用户签名/退出时发送给用户。我不确定这是否是“适当”的地方,但这似乎是合理的。

class ApplicationController < ActionController::Base
  protect_from_forgery

  def after_sign_in_path_for(resource_or_scope)
    if current_user.authentications.find_by_provider("twitter")
      ckey= YOUR_APPS_CONSUMER_KEY
      csecret= YOUR_APPS_CONSUMER_SECRET
      auth = current_user.authentications.find_by_provider("twitter")
      atoken = auth.token
      asecret = auth.secret
      Twitter.configure do |config|
        config.consumer_key = ckey
        config.consumer_secret = csecret
        config.oauth_token = atoken
        config.oauth_token_secret = asecret
      end
    end

    authentications_path
  end

  def after_sign_out_path_for(resource_or_scope)
      Twitter.reset
      authentications_path
  end


end

authentications_path只是我用来测试身份验证和相关内容的页面。你可以在任何地方重定向。当用户链接帐户时,我将其oauth令牌和密码保存在身份验证对象中。您将需要它来访问Twitter gem的某些方面。

我会等一会儿将此标记为答案,看看是否有人有更好的解决方案。