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.rb
或devise.rb
。如果我正在使用设计,那么所有4个密钥都应该在设计文件中吗?
2)当调用.update
方法时,谁发推文推文?消费我的网站的应用帐户或登录用户?
3)访问令牌是什么允许用户从他们的帐户发送推文,而不是应用的帐户?
显示如何让用户通过自己的帐户发送推文的代码将会受到赞赏,因为它们似乎在自述文件中缺失。
答案 0 :(得分:3)
放置初始化代码的位置并不重要。但通常你会在初始化程序中将相对于某个gem的代码放在与gem相同的名称中。所以在这种情况下,我会将该代码放在名为twitter.rb
的文件中。但是,在这种情况下,我认为您实际上并不需要初始化程序。
调用更新方法后,access_token
和access_token_secret
所属的用户就是推文。
是的,access_token
允许用户通过其帐户发推文。您可以从omniauth-twitter
的回复中获取该令牌和相应的秘密。
omniauth = env['omniauth.auth']
user.access_token = omniauth.credentials.token
user.access_token_secret = omniauth.credentials.secret
user.save
当然,为了能够保存令牌和秘密,您需要将相应的字段(access_token
和access_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