2014-08-30 2 views
1

Каждый раз, когда пользователь публикует комментарии, я хочу, чтобы он автоматически отправил тот же комментарий в мой Twitter.Как я могу отправить твиты в свою учетную запись Twitter?

Прежде всего, я уже сделал это с настройками разработчика Twitter.

Итак, я сделал тестовое мероприятие в своем приложении, чтобы он отправил твит в мою учетную запись Twitter. Однако, он говорит эту ошибку

NoMethodError (undefined method `[]' for nil:NilClass): 
app/controllers/top_controller.rb:173:in `test_action' 

Как я могу решить эту проблему? Это мои коды

драгоценные камни, связанные, уже в комплекте (я на рельсах 3.2.11)

gem 'omniauth-twitter' 
gem 'twitter' 
gem 'figaro' 

конфигурации/Инициализаторы/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 
end 

config/application.yml

TWITTER_KEY: 6TeBX6HkeHzMXesgc 
TWITTER_SECRET: JyfOndg8xHcM81KEpgmBT7h2vFJJujMP14YTdt6ruvLbsQk 

test_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 

ответ

2

Я думаю, ваша проблема может быть связана с конфигурацией контроллера Твиттера:

вместо:

@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 here.

Смежные вопросы