Um bom recurso para entender as diferentes concessões disponíveis no OAuth2, verifique este
Adicione o porteiro e planeje ao seu Gemfile no aplicativo API rails. Além disso, não se esqueça de executar os geradores para eles, migrações e criar um aplicativo para obter o app_id e o segredo do doorkeper (/ oauth / applications).
Remova o comentário do bloco “resource_owner_from_credentials” do doorkeeper.rb (lado da API)
resource_owner_from_credentials do |routes|
u = User.find_for_database_authentication(:email => params[:username])
u if u && u.valid_password?(params[:password])
end
Para expor a funcionalidade de seus controladores como uma API, eu recomendaria usar rocketpants ou grape (se você quiser algo mais leve).
Chamar do lado do cliente seria o seguinte usando ruby oauth2 gem
require 'oauth2'
callback = "http://localhost:3001/auth/example/callback"
app_id = "PROVIDED_BY_DOORKEEPER"
secret = "PROVIDED_BY_DOORKEEPER"
client = OAuth2::Client.new(app_id, secret, site: "http://localhost:3000/")
auth_url = client.auth_code.authorize_url(:redirect_uri => callback)
token = client.password.get_token('username@example.com', 'password')