每次用户发布评论时,我都希望它能自动将相同的评论发送到我的Twitter上。
首先,我已经完成了Twitter开发人员的设置。
因此,我在我的应用程序中做了一个测试动作,让它向我的Twitter帐户发送一条推特。但是,它说这个错误
NoMethodError (undefined method `[]' for nil:NilClass):
app/controllers/top_controller.rb:173:in `test_action'我怎么才能解决这个问题?这些是我的密码
与相关的已捆绑的(我在rails 3.2.11上)
gem 'omniauth-twitter'
gem 'twitter'
gem 'figaro'config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
Twitter.configure do |config|
config.consumer_key = ENV["TWITTER_KEY"]
config.consumer_secret = ENV["TWITTER_SECRET"]
end
endconfig/application.yml
TWITTER_KEY: 6TeBX6HkeHzMXesgc
TWITTER_SECRET: JyfOndg8xHcM81KEpgmBT7h2vFJJujMP14YTdt6ruvLbsQktest_action
def test_action
@twitter = Twitter::Client.new(oauth_token: request.env["omniauth.auth"][:credentials][:token], oauth_token_secret: request.env["omniauth.auth"][:credentials][:secret])
@twitter.update("Your message")
flash[:notice] = "Successfully tweeted on your account."
redirect_to root_path
return
end发布于 2014-08-30 16:15:54
我认为您的问题可能与Twitter的控制器配置有关:
而不是:
@twitter = Twitter::Client.new(oauth_token: request.env["omniauth.auth"][:credentials][:token], oauth_token_secret: request.env["omniauth.auth"][:credentials][:secret])试试这个:
@twitter = Twitter::REST::Client.new do |config|
config.consumer_key = ENV['CONSUMER_KEY']
config.consumer_secret = ENV['CONSUMER_SECRET']
config.access_token = request.env["omniauth.auth"][:credentials][:token]
config.access_token_secret = request.env["omniauth.auth"][:credentials][:secret]
end您还可能需要确认您的API密钥具有读写权限,您可以在Twitter开发人员帐户这里上检查该权限。
https://stackoverflow.com/questions/25582010
复制相似问题