2014-09-26 46 views
2

我對的twitter gem理解Twitter的寶石自述

Client = Twitter::REST::Client.new do |config| 
    config.consumer_key  = "YOUR_CONSUMER_KEY" 
    config.consumer_secret  = "YOUR_CONSUMER_SECRET" 
    config.access_token  = "YOUR_ACCESS_TOKEN" 
    config.access_token_secret = "YOUR_ACCESS_SECRET" 
end 

配置後自述的這部分幾個問題,要求可製成像這樣:

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

1)你在哪裏放置密鑰配置塊?我看過一些指南將它放在一個單獨的文件中,如config/twitter_credentials.rb,omniauth.rbdevise.rb。如果我正在使用設計,所有4個鍵都在設計文件中?

2)當.update方法被調用時,誰在鳴叫推文?應用程序帳戶或登錄的用戶使用我的網站?

3)訪問令牌是什麼讓用戶從他們的帳戶發送推文,而不是應用程序的帳戶?

代碼顯示如何讓用戶從他們自己的帳戶鳴叫,將不勝感激,因爲他們似乎從自述中缺少。

回答

3
  1. 把你的初始化代碼放在哪裏並不重要。但通常情況下,您將代碼相對於某個gem放置在與gem同名的初始化程序中。所以在這種情況下,我會將該代碼放入名爲twitter.rb的文件中。然而,在這種情況下,我不認爲你實際上需要一個初始化器。

  2. 當更新方法被調用時,access_tokenaccess_token_secret所屬的用戶是推文的用戶。

  3. 是的,access_token是允許用戶從他們的帳戶推文。您可以從omniauth-twitter的回覆中獲得該令牌和相應的祕密。

    omniauth = env['omniauth.auth'] 
    user.access_token = omniauth.credentials.token 
    user.access_token_secret = omniauth.credentials.secret 
    user.save 
    

    當然,要能保存令牌,你需要相應的字段(access_tokenaccess_token_secret)添加到您的用戶表的祕密。

然後,您可以從控制器鳴叫,就像這樣:

class SomeController < ApplicationController 
    def some_action 
    client = Twitter::REST::Client.new do |config| 
     config.consumer_key  = ENV["TWITTER_CONSUMER_KEY"] 
     config.consumer_secret  = ENV["TWITTER_CONSUMER_SECRET"] 
     config.access_token  = current_user.access_token 
     config.access_token_secret = current_user.access_token_secret 
    end 
    client.update("I'm tweeting with @gem!") 
    end 
end 
+0

我這今天真的看到了。 '您的訪問令牌 此訪問令牌可用於代表您自己的帳戶進行API請求。不要與任何人分享您的訪問令牌祕密。 「所以看起來#1是正確的,#2和#3並不完全。 因此,訪問令牌似乎是允許他人代表您自己的應用帳戶發送推文。這意味着消費者令牌可以讓應用程序代表已登錄的用戶發送推文。 – ahnbizcad 2014-09-27 20:41:13

+0

看來,使用更新方法推文並不是最好的辦法。 你必須連線並設計所有的預發佈頁面。 Twitter有一個共享按鈕,用於預先構建推文的頁面,允許用戶確認,允許用戶如果尚未完成則登錄到Twitter,並將您重定向回。似乎最好使用https://about.twitter.com/resources/buttons#tweet – ahnbizcad 2014-09-27 20:43:46