我有一个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。