Rails App中的Twitter API搜索未通过身份验证

时间:2019-04-02 20:11:24

标签: ruby-on-rails twitter twitter-oauth

我有一个Rails Api,我想从Twitter向Search api发出请求。

我有一个执行该逻辑的控制器鸣叫:

class Api::V1::TweetsController < Api::V1::BaseController
  def index

    client = Twitter::REST::Client.new do |config|
      config.consumer_key        = "secret"
      config.consumer_secret     = "secret"
      config.access_token        = "secret"
      config.access_token_secret = "secret"
    end

    @result = client.search("to:ruby", result_type: "recent").take(3)

(我稍后将其重构为秘密)

api的“视图”如下:

我使用了以下宝石:

ruby '2.5.3'
gem 'omniauth-twitter'
gem 'twitter'

在Twitter开发者网站上,我有以下内容:

Callback URL
http://127.0.0.1:3000
http://127.0.0.1:3000/auth/twitter/callback

我正在从localhost开发

当我用curl请求时,会发生以下情况:

{
  "status": 500,
  "error": "Internal Server Error",
  "exception": "#<OmniAuth::NoSessionError: You must provide a session to use OmniAuth.>",
  "traces": {
    "Application Trace": [],
    "Framework Trace": [
      {
        "id": 0,
        "trace": "omniauth (1.9.0) lib/omniauth/strategy.rb:180:in `call!'"

如果在浏览器中对其进行检查,则会看到以下内容:

unless env['rack.session']
        error = OmniAuth::NoSessionError.new('You must provide a session to use OmniAuth.')
        raise(error)
      end

      @env = env

作为标题:OmniAuth :: NoSessionError-您必须提供一个会话才能使用OmniAuth。

我很困惑,因为我不想添加任何登录系统(无论是否设计),我只想使用搜索API,而无需任何用户。

我不确定我是在做错什么,还是必须使用用户身份验证才能使用Search API。

0 个答案:

没有答案