我在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配置的最佳方式,我该怎么办?
如果您需要更多详细信息,请与我们联系。
答案 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的某些方面。
我会等一会儿将此标记为答案,看看是否有人有更好的解决方案。