过去三天我一直在试图解决这个问题,但无济于事。我所希望做的就是允许使用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)