У меня есть Rails Api, я хочу сделать запрос к Search api из Twitter.
У меня есть твиттер контроллера, который выполняет логику:
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 'view' выглядит следующим образом:
Я использовал следующие драгоценные камни:
ruby '2.5.3'
gem 'omniauth-twitter'
gem '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 поиска, где вам не нужен какой-либо пользователь.
Я не уверен, что делаю что-то не так или вам нужно пройти аутентификацию пользователя, чтобы использовать API поиска.