2014-10-07 61 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