Ruby on rails 理解twitter gem自述

Ruby on rails 理解twitter gem自述,ruby-on-rails,twitter,devise,omniauth,Ruby On Rails,Twitter,Devise,Omniauth,我对本书自述的这一部分有几个问题 配置后,可以按如下方式发出请求: client.update("I'm tweeting with @gem!") 1) 您将密钥配置块放在哪里?我看到一些指南将其放在单独的文件中,如config/twitter\u credentials.rb,omniauth.rb,或designe.rb。如果我使用的是Desive,那么这4把钥匙是否都应该在Desive文件中 2) 调用.update方法时,谁会发送推文?应用程序帐户或使用我的网站的登录用户 3) 访问

我对本书自述的这一部分有几个问题

配置后,可以按如下方式发出请求:

client.update("I'm tweeting with @gem!")
1) 您将密钥配置块放在哪里?我看到一些指南将其放在单独的文件中,如
config/twitter\u credentials.rb
omniauth.rb
,或
designe.rb
。如果我使用的是Desive,那么这4把钥匙是否都应该在Desive文件中

2) 调用
.update
方法时,谁会发送推文?应用程序帐户或使用我的网站的登录用户

3) 访问令牌是否允许用户从其帐户而不是应用程序的帐户发送推文

代码显示如何让用户从他们自己的帐户推特将不胜感激,因为他们似乎从自述中丢失

  • 将初始值设定项代码放在哪里并不重要。但通常,您将与某个gem相关的代码放在与gem同名的初始值设定项中。所以在本例中,我将代码放在一个名为
    twitter.rb
    的文件中。但是,在这种情况下,我认为您实际上不需要初始值设定项

  • 调用update方法时,
    access\u-token
    access\u-token\u-secret
    所属的用户就是推特用户

  • 是的,
    access\u令牌
    允许用户从其帐户发送tweet。您可以从
    omniauth twitter
    的响应中获得该令牌和相应的秘密

    omniauth = env['omniauth.auth']
    user.access_token = omniauth.credentials.token
    user.access_token_secret = omniauth.credentials.secret
    user.save
    
    当然,为了能够保存令牌和密码,您需要将适当的字段(
    access\u-token
    access\u-token\u-secret
    )添加到用户表中

  • 然后,您可以从控制器发出tweet,如下所示:

    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
    
    class SomeController
    我今天真的看到了这个<代码>您的访问令牌此访问令牌可用于代表您自己的帐户发出API请求。不要与任何人共享您的访问令牌机密看来#1是正确的,#2和#3不完全正确。因此,访问令牌似乎是允许他人代表您自己的应用程序帐户发送tweet。这意味着消费者代币的使用是为了让应用程序能够代表登录用户发送推文。看来使用更新方法发送推文并不是最好的方式。你必须连接并设计所有的推特前页面。Twitter有一个共享按钮,可以转到预先构建的页面,该页面预先填充Twitter,允许用户确认,允许用户登录Twitter(如果尚未登录),并将您重定向回Twitter。看来还是用这个比较好
    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