Я пытаюсь интегрировать сервер Rack OAuth-2 в мое приложение sinatra, чтобы использовать его в реализации потока веб-сервера , и я не могу заставить его работать :(. Следующий код в контроллере oauth
require "rack/oauth2/sinatra"
module RestKit
module Network
class OAuth2 < Sinatra::Base
use Rack::Logger
set :sessions, true
set :show_exceptions, true
ENV["DB"] = "test"
DATABASE = Mongo::Connection.new[ENV["DB"]]
register Rack::OAuth2::Sinatra
oauth.authenticator = lambda do |username, password|
"Batman" if username == "cowbell" && password == "more" end
oauth.host = "localhost"
oauth.database = DATABASE
# 3. Obtaining End-User Authorization
before "/oauth/*" do
halt oauth.deny! if oauth.scope.include?("time-travel") # Only Superman can do that
end
get "/oauth/authorize" do
"client: #{oauth.client.display_name}\nscope: #{oauth.scope.join(", ")}\nauthorization: #{oauth.authorization}"
end
post "/oauth/grant" do
oauth.grant! "Batman"
end
post "/oauth/deny" do
oauth.deny!
end
# 5. Accessing a Protected Resource
before { @user = oauth.identity if oauth.authenticated? }
oauth_required "/user"
get "/user" do
@user
end
get "/list_tokens" do
oauth.list_access_tokens("Batman").map(&:token).join(" ")
end
end
end
end
Затем я пытаюсь получить код авторизации с помощью curl из терминала с:
curl -i http://localhost:4567/oauth/authorize -F response_type=code -F client_id=[the ID] -F client_secret=[the secret] -F redirect_uri=http://localhost:4567/oauth/showcode
и Просто я получил в ответ:
HTTP/1.1 400 Bad Request
Тип содержимого: текст / обычный
Длина контента: 20
Подключение: keep-alive
Сервер: тонкий 1.2.11 под кодовым названием Bat-Shit Crazy
Отсутствует URL перенаправления
У вас есть идеи, что я делаю не так? Спасибо!