Ruby on rails Twitter::错误::PostsControllercreate中未经授权-令牌无效或过期
为什么create会向我抛出无效/过期的令牌错误 用户能够很好地登录,因此他们得到了正确的身份验证,但是当他们尝试创建帖子时,我得到了这个错误。我使用Omniauth gem v1.1.4进行身份验证,使用Twitter gem v4.6.2发布到Twitter。Omniauth twitter gem是v0.0.16,如果这很重要的话 这是导致我出错的代码Ruby on rails Twitter::错误::PostsControllercreate中未经授权-令牌无效或过期,ruby-on-rails,ruby,twitter,omniauth,twitter-oauth,Ruby On Rails,Ruby,Twitter,Omniauth,Twitter Oauth,为什么create会向我抛出无效/过期的令牌错误 用户能够很好地登录,因此他们得到了正确的身份验证,但是当他们尝试创建帖子时,我得到了这个错误。我使用Omniauth gem v1.1.4进行身份验证,使用Twitter gem v4.6.2发布到Twitter。Omniauth twitter gem是v0.0.16,如果这很重要的话 这是导致我出错的代码 class PostsController < ApplicationController def create Twi
class PostsController < ApplicationController
def create
Twitter::Client.new.update(@post.content)
end
end
这是我的omniauth初始值设定项
Rails.application.config.middleware.use OmniAuth::Builder do
configure do |config|
config.path_prefix = '/auth'
end
provider :twitter, "xxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
end
Twitter.configure do |config|
config.consumer_key = "xxxxxxxxxxxxxxxxxxxx"
config.consumer_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
config.oauth_token = :token
config.oauth_token_secret = :secret
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
你需要像“@twitter\u user.update”这样的东西。对于使用“twitter::Client.new”创建的每个twitter用户,必须提供omniauth的令牌和secret,就像在“user.rb”模型中一样
class PostsController < ApplicationController
def create
# get twitter user. Feel free to change it depending on your app
@twitter_user = User.twitter
@twitter_user.update(@post.content)
end
end
我认为您正在使用的authentications表中的当前令牌和密码已过期 您只需尝试删除authentications表中的所有行,然后再次使用twitter帐户登录,然后查看它是否正常工作。 或者尝试在用户通过twitter帐户获得身份验证后设置断点,然后在手动设置令牌和密码并返回身份验证信息:[credentials][token]和[credential][token]后执行推特发布行。我想这条推特会被发布的。
如果它仍然不工作,那么最好显示其他相关代码,如会话控制器。整个身份验证流程将更有助于解决问题 我相信这是@Newbie的复制品,根据这条线索,我在哪里使用客户端而不是Twitter?因为当前代码是Twitter::Client.new。update@post.contentif我得到了nil:NilClass的未定义方法'update',如何使用上面发布的方法修复它?
class PostsController < ApplicationController
def create
# get twitter user. Feel free to change it depending on your app
@twitter_user = User.twitter
@twitter_user.update(@post.content)
end
end