2014-10-07 66 views
2

我有一个应用程序必须在用户的页面鸣叫。Ruby Twitter如何授权用户?

使用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时,我该如何实现该功能?

回答

3

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

宝石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 authorization and railscasts tutorial

+0

[3-legged authorization](https://dev.twitter.com/oauth/3-legged)和[railscasts tutorial](http://railscasts.com/episodes/241-simple-omniauth-revised)的链接)。对不起,没有发布链接的答案,我刚加入该网站,它不会让我添加多个。 – user2140039 2014-10-07 11:47:32