Получите токен доступа Instagram, используя Restful Ruby - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь использовать Instagram API для создания фонового рабочего рельса для запроса хэштегов. Мне не нужно входить в систему какому-либо другому пользователю, кроме меня самого, кроме того, я не хочу использовать какие-либо браузеры, только вызовы RESTful.

Я пытаюсь автоматизировать получение моего токена доступа в скрипте Ruby, используя гем "rest-client" (https://github.com/rest-client/rest-client)

Я могу успешно перейти по следующему URL-адресу в браузере и получить маркер доступа из URL-адреса ответа

Я использовал оба эти URL: https://www.instagram.com/oauth/authorize/?client_id=xxx&redirect_uri=xxx&response_type=token

НО Когда я использую камень RESTful response = RestClient.get(url) response.headers['location'] ноль

Я также пытался использовать URL API Instagram, но не повезло: https://api.instagram.com/oauth/authorize/?client_id=xxx&redirect_uri=xxx&response_type=code

Кто-нибудь знает, как получить программный токен доступа полностью в Ruby?

Я думаю, что мне не хватает шага для входа в систему пользователя (который будет мной). Не уверен, как это сделать программно.

Можно ли использовать API Instagram с кодом или токеном доступа, который никогда не меняется?

1 Ответ

0 голосов
/ 27 января 2019

rest-client автоматически запрашивает перенаправление на хост.

https://github.com/rest-client/rest-client/blob/master/lib/restclient/abstract_response.rb

Я еще никогда не использовал API Instagram, но показан код для получения «Location» на 302ниже.

# client
require 'net/http'
require 'uri'
url = URI.parse('http://localhost:2000')
res = Net::HTTP.start(url.host, url.port) do |http|
  http.get('/')
end
puts "#{res.header['Location']} is https://google.com"
# test server
require 'socket'
server = TCPServer.new 2000
loop do
  socket = server.accept
  while header = socket.gets
    break if header.chomp.empty?
    puts header.chomp
  end
  socket.puts "HTTP/1.0 302"
  socket.puts "Location: https://google.com"
  socket.close
end

Я надеюсь, что эта информация будет полезна для вас.

...