Поток веб-сервера на сервере Rack OAuth-2 - PullRequest
2 голосов
/ 04 августа 2011

Я пытаюсь интегрировать сервер 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 перенаправления

У вас есть идеи, что я делаю не так? Спасибо!

1 Ответ

2 голосов
/ 04 января 2012

Конец вашего запроса curl:

-F redirect_uri=http://localhost:4567/oauth/showcode

, но вы не определили этот маршрут в приведенном выше коде, т.е. где:

get "/oauth/showcode" do

?Вот почему ошибка «Отсутствует URL перенаправления».

...