Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Twitter::错误::PostsControllercreate中未经授权-令牌无效或过期_Ruby On Rails_Ruby_Twitter_Omniauth_Twitter Oauth - Fatal编程技术网

Ruby on rails Twitter::错误::PostsControllercreate中未经授权-令牌无效或过期

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

为什么create会向我抛出无效/过期的令牌错误

用户能够很好地登录,因此他们得到了正确的身份验证,但是当他们尝试创建帖子时,我得到了这个错误。我使用Omniauth gem v1.1.4进行身份验证,使用Twitter gem v4.6.2发布到Twitter。Omniauth twitter gem是v0.0.16,如果这很重要的话

这是导致我出错的代码

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