使用 Twitter gem 和 Omniauth 发推文
我正在开发一个网络应用程序,可以让用户发布推文和链接,但我似乎无法让 Twitter 和 Omniauth 很好地协同工作。我目前正在 Rails 3.0.6 和 Ruby 1.8.7 上运行,使用 Twitter gem 1.4.1 和 Omniauth gem 0.2.5
我可以很好地验证用户身份,但是当涉及到发送推文时,我只是给出错误:
POST https://api.twitter.com/1/statuses/update.json: 401: Incorrect signature
我遵循了 本教程,并有将我的消费者密钥和消费者秘密放在 Omniauth 初始化程序中的 Twitter 配置块中,但不是 oauth 令牌或 oauth 秘密,因为这些肯定会在每个用户的基础上使用。
omniauth.rb
Twitter.configure do |config|
config.consumer_key = "XXXXXXXXXXXXXXXXXXXXXX"
config.consumer_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
end
user.rb
def twitter
unless @twitter_user
provider = self.authentications.find_by_provider('twitter')
@twitter_user = Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret) rescue nil
end
@twitter_user
end
然后我使用以下命令形成请求:
current_user.twitter.update("Hello World!")
这就是给我带来 401 错误的原因。
有什么想法吗?谢谢!
I'm developing a web app that will let users tweet posts and links, but I can't seem to get Twitter and Omniauth to play nicely together. I'm currently running on Rails 3.0.6 and Ruby 1.8.7, with the Twitter gem 1.4.1 and Omniauth gem 0.2.5
I can authenticate the users fine, but when it comes to sending a tweet, I'm just given the error:
POST https://api.twitter.com/1/statuses/update.json: 401: Incorrect signature
I followed this tutorial, and have placed my consumer key and consumer secret in a Twitter configure block in my Omniauth initializer, but not the oauth token or oauth secret because these will surely be used on a per-user basis.
omniauth.rb
Twitter.configure do |config|
config.consumer_key = "XXXXXXXXXXXXXXXXXXXXXX"
config.consumer_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
end
user.rb
def twitter
unless @twitter_user
provider = self.authentications.find_by_provider('twitter')
@twitter_user = Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret) rescue nil
end
@twitter_user
end
I then form the request using:
current_user.twitter.update("Hello World!")
And that's what then gives me the 401 error.
Any ideas? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的 user.rb 代码使用了错误的格式。他们改变了很多。你现在需要这样的东西:
Your user.rb code is using the wrong format. They've changed quite a lot. You need something like this now:
我在使用该版本的 OmniAuth 时遇到了类似的问题,我回到了 0.2.0 版本,所有 401 问题都不再发生。
I was having similar problems with that version of OmniAuth, I moved back to version 0.2.0 and all the 401's stopped happening.