在我的应用中,我正在通过以下代码向用户提供推文:
if twitter = current_user.authentications.find_by_provider("twitter")
Twitter.configure do |tw|
tw.consumer_key = "6jaqMt7kE9iVxh8hX0mmtQ"
tw.consumer_secret = "5ZIydxRBFfEJxc2EzedahIxoeO8g1hZCQVqZFtWWNM"
tw.oauth_token = twitter.token
tw.oauth_token_secret = twitter.token_secret
end
Twitter.update(params[:tweet])
它在我的localhost中运行良好。但是现在我已经将我的应用程序部署到了heroku,我正在尝试发送推文,但是在heroku日志中它说:
2012-11-15T01:30:32+00:00 app[web.1]: Completed 500 Internal Server Error in 494ms
2012-11-15T01:30:32+00:00 app[web.1]:
2012-11-15T01:30:32+00:00 app[web.1]: Twitter::Error::BadRequest (Bad Authentication data):
2012-11-15T01:30:32+00:00 app[web.1]:
2012-11-15T01:30:32+00:00 app[web.1]:
2012-11-15T01:30:32+00:00 app[web.1]: app/controllers/posts_controller.rb:12:in `create'
我该怎么做才能解决这个问题?
感谢。
答案 0 :(得分:0)
两件事:
在您注册的Twitter应用程序的设置中,将您的回调URL更新到您的生产服务器位置。
如果您正在使用herokuapp.com的子域名,请猜测,您正处于向Twitter提供大量其他API请求的池中。 Proxy your API requests through Apigee
初始化然后通过控制台在Heroku上迁移数据库:
heroku run rake db:setup
heroku run rake db:migrate
(通常只是rake db:migrate工作,但在这种情况下我必须同时执行)
答案 1 :(得分:-1)
我已经找到了Twitter身份验证,并根据我的经验编写了一个教程:http://www.orhancanceylan.com/rails-twitter-and-facebook-authentications-with-omniauth-and-devise/