Sha256: 0501d25332a66b3ed87fa8ebf29ff43a2cc0e6fa7e8c730032b9e8ecd5b5df9a

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

require 'omniauth-oauth2'

module OmniAuth
  module Strategies
    class Discord < OmniAuth::Strategies::OAuth2
      DEFAULT_SCOPE = 'email'
      
      option :name, "discord"

      option :client_options, {
        :site          => 'https://discordapp.com/api/oauth2/',
        :authorize_url => 'https://discordapp.com/api/oauth2/authorize',
        :token_url     => 'https://discordapp.com/api/oauth2/token'
      }
      
      option :authorize_options, [:scope]

      uid { raw_info['id'] }

      info do
        {
          :id            => raw_info['id'],
          :username      => raw_info['username'],
          :discriminator => raw_info['discriminator'],
          :avatar        => raw_info['avatar'],
          :verified      => raw_info['verified'],
          :email         => raw_info['email']
        }
      end

      extra do
        {
          'raw_info' => raw_info
        }
      end

      def raw_info
        @raw_info ||= access_token.get('/users/@me').parsed
      end
      
      def authorize_params
        super.tap do |params|
          params[:scope] = request.params['scope']
          params[:scope] ||= DEFAULT_SCOPE
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-discord-0.1.0 lib/omniauth/strategies/discord.rb