为什么twitter oauth访问令牌无效/过期(rails 3)



过去三天我一直在试图解决这个问题,但无济于事。我所希望做的就是允许使用Twitter登录的用户向他们的帐户发送tweet。

这是我试图解决的错误信息:

Twitter::Error::Unauthorized in PostsController#create
Invalid or expired token

我尝试了各种不同的方法,但我还是回到了同一条信息上。

这就是我现在的处境:

class ApplicationController < ActionController::Base
   def twitter
    unless @twitter_user
      provider = Authentication.find_by_provider('twitter')
      @twitter_user = Twitter::Client.new(:token => provider.token, :secret => provider.secret) rescue nil
    end
    @twitter_user
    end

这里是抛出错误的地方

class PostsController < ApplicationController
    def create
        twitter.update(@post.content)
    end

模式是这样布局的

create_table "authentications", :force => true do |t|
    t.integer  "user_id"
    t.string   "provider"
    t.string   "uid"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
    t.string   "secret"
    t.string   "token"
  end
  create_table "users", :force => true do |t|
    t.string    "name"
    t.string    "email"
    t.timestamp "created_at",                         :null => false
    t.timestamp "updated_at",                         :null => false
    t.string    "password_digest"
    t.string    "remember_token"

这是我的初始值设定项

Rails.application.config.middleware.use OmniAuth::Builder do
  configure do |config|
    config.path_prefix = '/auth'
  end
  provider :twitter, "XXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
end
Twitter.configure do |config|
  config.consumer_key = "XXXXXXXXXXXXXXXXXXXXXX"
  config.consumer_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  config.oauth_token = :token
  config.oauth_token_secret = :secret
end

我做错了什么?

试着改变这个:

Twitter::Client.new(:token => provider.token, :secret => provider.secret) 

into this

Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret)

最新更新