Я новичок в разработке API в Ruby On Rails. В приложении rails у меня есть разработка для аутентификации, и я также хочу использовать привратника для входа OAuth2 в API. Я не знаю, как мне реализовать Api и как использовать для этого привратника. Может ли кто-нибудь объяснить это шагами, которые мне нужно выполнить, чтобы реализовать это?
Вход oAuth2 в API для веб-приложения в ruby on rails с помощью привратника с помощью devise
Ответы (1)
Для реализации API я лично предпочитаю использовать grape. Следуя ридми, вы сразу же начнете работать. :)
Вместо этого для интеграции винограда с привратником вы можете использовать wine_bouncer или grape-doorkeeper.
Теперь, в зависимости от того, кто использует ваш API, у Doorkeeper есть 4 разрешения на авторизацию, я настоятельно рекомендую вам прочитать различные типы грантов и их использование, вы можете прочитать это oauth2 упростил статью.
Чтобы заставить привратника играть вместе с devise, вам нужно изменить инициализатор привратника следующим образом:
Блок resource_owner_authenticator
обычно вызывается, когда вы выполняете авторизацию или неявный запрос на предоставление:
resource_owner_authenticator do |routes|
# Put your resource owner authentication logic here.
# If you want to use named routes from your app you need
# to call them on routes object eg.
# routes.new_user_session_path
current_user || warden.authenticate!(:scope => :user)
end
Вы можете просмотреть примеры приложений на вики-сайте Doorkeeper.
Вместо этого для предоставления пароля используется блок resource_owner_from_credentials
, и, согласно вики, вы можете настроить его следующим образом:
resource_owner_from_credentials do |routes|
request.params[:user] = {:email => request.params[:username], :password => request.params[:password]}
request.env["devise.allow_params_authentication"] = true
request.env["warden"].authenticate!(:scope => :user)
end
Некоторые ресурсы, которые могут вам помочь:
- railscasts
- Создание REST API с помощью Rails
- выживший API *создание API в приложении rails
- виноград в рельсах
Надеюсь, поможет