Вот решение:
Я использовал token_authenticatable от устройства.
Здесь - это отличный ответ, как реализовать его с помощью json. У меня были некоторые проблемы и я описал их в этом вопросе . Также есть ответ.
Вот пример кода:
require "net/http"
require "json"
@host = "localhost"
@port = 3000
@post_sign = "/users/sign_in.json"
@post_ws = "/external/rd"
@req_sign = {
"user" => {
"email" => "some@email.com",
"password" => "123456"
}
}.to_json
sig = Net::HTTP::Post.new(@post_sign, initheader = {'Content-Type' => 'application/json'})
sig.body = @req_sign
http = Net::HTTP.new(@host, @port).start
resp1 = http.request(sig)
puts "Response: #{resp1.code} , Message: #{resp1.message} , Body: #{resp1.body}"
if resp1.code == "200" then
puts "logged in"
json_resp = JSON.parse(resp1.body)
@auth_token = json_resp['auth_token']
@req_body = {
"device" => {
"name" => "device_json",
"operating_system_id" => "7",
"hash_string" => "jfsg3k4ovj0j02jv"
},
"auth_token" => @auth_token
}.to_json
req = Net::HTTP::Post.new(@post_ws, initheader = {'Content-Type' =>'application/json'})
req.body = @req_body
response = http.request(req)
puts "Response: #{response.code} , Message: #{response.message} , Body: #{response.body}"
end
С уважением,
Матеуш