0

我在 rails 3 应用程序中使用设计、omniauth、omniauth-twitter 和 twitter gem。我想这样做,所以当用户注销时,它也会删除 twitter gem 配置。当我说“twitter gem 配置”时,我指的是:

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 信息。我相信我可以通过调用来删除配置

Twitter.reset

我想我的问题是放在哪里最好?此外,如果这不是删除用户 twitter 配置的最佳方式,我应该怎么做?

谢谢,如果您需要更多详细信息,请告诉我。

4

2 回答 2

0

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

于 2012-04-28T15:49:31.110 回答
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 的某些方面。

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

于 2012-04-29T19:10:52.127 回答