MLH/omniauth-mlh
This is the official OmniAuth strategy for authenticating with MyMLH in Ruby applications. To use it, you'll need to register an application and obtain a OAuth Application ID and Secret from MyMLH.
It now supports MyMLH API V4. Read the MyMLH V4 docs here.
Once you have done so, you can follow the instructions below:
Requirements
This Gem requires your Ruby version to be at least 3.2.0
.
Installation
Add this line to your application's Gemfile:
gem 'omniauth-mlh'
And then execute:
$ bundle
Or install it yourself as:
$ gem install omniauth-mlh
Usage (Rack)
You can find a list of potential scopes and expandable fields in the docs. The below defaults are provided simply as an example.
use OmniAuth::Builder do
provider :mlh, ENV['MY_MLH_KEY'], ENV['MY_MLH_SECRET'],
scope: 'public offline_access user:read:profile',
expand_fields: ['education']
end
Usage (Rails with Devise)
# config/devise.rb
Devise.setup do |config|
config.provider :mlh, ENV['MY_MLH_KEY'], ENV['MY_MLH_SECRET'],
scope: 'public offline_access user:read:profile',
expand_fields: ['education']
end
Accessing User Data
Once a user has been authorized and you have received a token in your callback, you may access the scoped information for that user via the info key on the request data, as per the below example from a simple Sinatra app:
get '/auth/mlh/callback' do
auth = request.env['omniauth.auth']
user_data = auth['info']
first_name = user_data['first_name']
erb "
<h1>Hello #{first_name}</h1>"
end
You can find the full User object in the docs.
Contributing
For guidance on setting up a development environment and how to make a contribution to omniauth-mlh, see the contributing guidelines.
Credit
We used part of datariot/omniauth-paypal's code to help us test this gem.
Questions?
Have a question about the API or this library? Start by checking out the official MyMLH documentation. If you still can't find an answer, tweet at @MLHacks or drop an email to engineering@mlh.io.