【问题标题】:Ruby Twitter how to authorize user?Ruby Twitter如何授权用户?
【发布时间】:2014-12-01 17:01:39
【问题描述】:

我有一个必须在用户页面上发推文的应用程序。

使用 gem Twitter

我有一个必须创造所有东西的行动。

def call
  client = set_client

  client.token

  client.update!("I'm tweeting with @gem!")
end

此方法创建客户端以使用 API

def set_client
  Twitter::REST::Client.new do |config|
    config.consumer_key        = "****"
    config.consumer_secret     = "****"
    config.access_token        = "****"
    config.access_token_secret = "****"
  end
end

如果我认为正确,我需要获取用户的 access_token 并授予他权限。 但在应用程序的设置中,我只能为我的页面获取令牌。

当我得到用户的 access_token 和 access_token_secret 时,如何实现该功能?

【问题讨论】:

    标签: ruby ruby-on-rails-4 twitter


    【解决方案1】:

    要获取用户的访问令牌和密钥,您需要完成 Twitter 的 3-legged 授权。

    Gem omniauth-twitter 使这个过程变得简单,甚至在一个不错的 railscasts 教程中解释了它

    假设您配置了omniauth 和一个UsersController:

    def create
      user = User.from_omniauth(env["omniauth.auth"])
    end
    

    然后在用户模型中:

    def self.from_omniauth(auth)
      where(auth.slice("provider", "uid")).first || create_from_omniauth(auth)
    end
    
    def self.create_from_omniauth(auth)
      create! do |user|
        user.provider = auth["provider"]
        user.uid = auth["uid"]
        user.name = auth["info"]["nickname"]
        user.access_token = auth["credentials"]["token"]
        user.access_token_secret = auth["credentials"]["secret"]
      end
    end
    
    def set_client
      Twitter::REST::Client.new do |config|
        config.consumer_key        = "****"
        config.consumer_secret     = "****"
        config.access_token        = access_token
        config.access_token_secret = access_token_secret
      end
    end
    

    更多信息:3-legged authorizationrailscasts tutorial

    【讨论】:

    猜你喜欢
    • 2011-04-09
    • 2011-04-17
    • 2015-03-16
    • 2015-11-11
    • 2017-05-16
    • 2015-11-06
    • 2015-09-16
    • 2011-07-28
    • 2014-03-08
    相关资源
    最近更新 更多