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