Twitter :: Error ::未经授权的PostsController#create-令牌无效或过期 [英] Twitter::Error::Unauthorized in PostsController#create - Invalid or expired token

查看:103
本文介绍了Twitter :: Error ::未经授权的PostsController#create-令牌无效或过期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么创建"会抛出无效/过期的令牌错误?

Why does "create" throw me an invalid/expired token error?

用户可以正常登录(因此他们已通过正确的身份验证),但是当他们尝试创建帖子时,出现此错误.我正在使用Omniauth gem(v1.1.4)进行身份验证,并使用Twitter gem(v4.6.2)进行Twitter发布.如果重要的话,Omniauth-twitter gem是v0.0.16.

The users are able to log in just fine (so they are authenticated properly) but when they try to create a post, I get this error. I'm using Omniauth gem (v1.1.4) for authentication and Twitter gem (v4.6.2) for the posting to Twitter. The Omniauth-twitter gem is v0.0.16 if that matters.

这是导致我出错的代码

class PostsController < ApplicationController
  def create
    Twitter::Client.new.update(@post.content)
  end
end

这是用户模型(user.rb)的一部分

This is part of the user model (user.rb)

def twitter
  unless @twitter_user
    provider = self.authentications.find_by_provider('twitter')
    @twitter_user = Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret) rescue nil
  end
  @twitter_user
end

这是我的omniauth初始化程序

Here's my omniauth initializer

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

推荐答案

我认为您正在使用的身份验证"表中的当前令牌"和秘密"已经过期.

I think the current "token" and "secret" in the "authentications" table you are using have been expired.

  • 您可以简单地尝试删除身份验证"表中的所有行,然后再次使用Twitter帐户登录并查看其是否正常运行.
  • 或者尝试在通过Twitter帐户进行身份验证的用户代码后立即设置断点,然后在手动设置带有返回的身份验证信息的令牌"和秘密"之后执行推文发布行:["credentials"] [令牌"]和[凭据"] [令牌"].我认为该推文将会发布.

如果仍然无法正常工作,则最好也显示其他相关代码,例如会话控制器.身份验证流程的整体图将有助于解决问题.

If it's still not working, you'd better show other related codes like session controller as well. The whole picture of your authentication flow will be more helpful to figure the problem out.

这篇关于Twitter :: Error ::未经授权的PostsController#create-令牌无效或过期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆