class OmniAuth::Strategies::Notion

Public Instance Methods

basic_auth_header() click to toggle source
# File lib/omniauth-notion.rb, line 58
def basic_auth_header
  "Basic " + Base64.strict_encode64("#{options[:client_id]}:#{options[:client_secret]}")
end
build_access_token() click to toggle source

The Notion API requires HTTP Basic Authentication when exchanging the code for a token (i.e. when POSTing to /v1/oauth/token)

Notion Docs: https://developers.notion.com/docs/authorization#exchanging-the-grant-for-an-access-token
Similar solution: https://gist.github.com/handylearn/6d6125263d32544c2057#file-filab_strategy-rb-L35
Calls superclass method
# File lib/omniauth-notion.rb, line 51
def build_access_token
  options.token_params.merge!(
    headers: { 'Authorization' => basic_auth_header },
  )
  super
end
callback_url() click to toggle source
# File lib/omniauth-notion.rb, line 70
def callback_url
  full_host + script_name + callback_path
end
query_string() click to toggle source

def callback_url

# If redirect_uri is configured in token_params, use that
# value.
token_params.to_hash(symbolize_keys: true)[:redirect_uri] || super

end

Calls superclass method
# File lib/omniauth-notion.rb, line 88
def query_string
  # This method is called by callback_url, only if redirect_uri
  # is omitted in token_params.
  if request.params['code']
    # If this is a callback, ignore query parameters added by
    # the provider.
    ''
  else
    super
  end
end
raw_info() click to toggle source

The Notion API gives us some core data as part of the token response. I don't think there is a separate /user/me endpoint (at least as of May 2021). Also, we get a `bot_id`, not a real user ID. We do get some informaton about the connector Organization, however.

# File lib/omniauth-notion.rb, line 66
def raw_info
  @raw_info ||= access_token.params.except('access_token', 'bearer')
end