0

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

这是我要解决的错误消息:

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

我已经尝试了各种不同的东西,但我回到了一个完整的 360 圈以同样的信息。

这是我现在所处的位置:

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

我究竟做错了什么?

4

1 回答 1

0

尝试改变这个:

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

进入这个

Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret)
于 2013-04-12T18:57:25.893 回答