require 'omniauth/strategies/oauth2' class OmniAuth::Strategies::Seesaw < OmniAuth::Strategies::OAuth2 option :name, 'seesaw' option :client_options, { site: 'https://api.seesaw.co' } uid do raw_info['id'] end info do { username: raw_info['username'], display_name: raw_info['display_name'], short_display_name: raw_info['short_display_name'], biography: raw_info['biography'], created_at: raw_info['created_at'], avatar_url: raw_info['avatar_url'] } end extra do { raw_info: raw_info } end def raw_info @raw_info ||= access_token.get('/v1/me').parsed end def authorize_params super.tap do |params| # Read the params if passed directly to omniauth_authorize_path %w(invitation_slug).each do |k| params[k.to_sym] = request.params[k] unless [nil, ''].include?(request.params[k]) end end end end