【问题标题】:Multi-user Authentication Twitter OAuth Gem - Rails多用户身份验证 Twitter OAuth Gem - Rails
【发布时间】:2015-05-12 07:46:33
【问题描述】:

我的应用程序连接到用户的 Twitter 帐户并从他们的时间线中提取最新的推文。我使用了OAuth Twitter 策略和Twitter GEM by Sferik 的组合。

为了了解该应用如何处理多用户身份验证,我创建了两个 Twitter 帐户并尝试在我的应用中对每个帐户进行身份验证。

我的问题是两个帐户看到的是同一组推文 (属于帐户 #1)。

这是我的:

OAuth 初始化器:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, ENV['TWITTER_API_KEY'], ENV['TWITTER_API_SECRET']
    {
      :secure_image_url => 'true',
      :image_size => 'original',
      :authorize_params => {
      :force_login => 'true',
      }
    }
end

用户self.from_omniauth(auth):

 def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      ...
      user.save
    end

  end

调用从模型中提取推文:

def whatever
  ..
  tweets = $[my_provider_variable].home_timeline
  ..
end 

Twitter API Gem 初始化程序:

 $[my_provider_variable] = Twitter::REST::Client.new do |config|
  config.consumer_key        = ENV['TWITTER_API_KEY']
  config.consumer_secret     = ENV['TWITTER_API_SECRET']
  config.access_token        = ENV['TWITTER_ACCESS_TOKEN']
  config.access_token_secret = ENV['TWITTER_ACCESS_SECRET']
end

【问题讨论】:

    标签: ruby-on-rails ruby authentication twitter oauth


    【解决方案1】:

    我将创建一个 belongs_to 您的用户的不同模型,并在用户模型中添加 has_many。并在该模型中存储提供程序和 uid。然后遍历用户拥有的所有子节点,并使用存储在新模型中的信息发送推文请求。这样您就可以添加任意数量的帐户。

    在您的代码中,我认为问题出在first_or_create。链接新帐户时,它会创建一个新用户,而不是将信息添加到现有用户。

    【讨论】:

    • 是的。实际上,我最终将tokensecret 列添加到用户表中。
    猜你喜欢
    • 2011-06-18
    • 2011-06-10
    • 2011-05-14
    • 2011-04-02
    • 1970-01-01
    • 2013-07-05
    • 2011-10-05
    • 2011-07-30
    • 2014-05-28
    相关资源
    最近更新 更多