0.01
Low commit activity in last 3 years
A long-lived project that still receives updates
Official OmniAuth strategy for MyMLH.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 2.1.1
~> 2.0.9
 Project Readme

MLH/omniauth-mlh

Gem Version Test

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.