了解twitter gem自述文件

时间:2014-09-26 21:13:27

标签: ruby-on-rails twitter devise omniauth

我对twitter gem

的自述文件的这一部分几乎没有疑问
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.rbomniauth.rbdevise.rb。如果我正在使用设计,那么所有4个密钥都应该在设计文件中吗?

2)当调用.update方法时,谁发推文推文?消费我的网站的应用帐户或登录用户?

3)访问令牌是什么允许用户从他们的帐户发送推文,而不是应用的帐户?

显示如何让用户通过自己的帐户发送推文的代码将会受到赞赏,因为它们似乎在自述文件中缺失。

1 个答案:

答案 0 :(得分: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)添加到用户表中。

  4. 然后您可以从控制器发推文,如下:

    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