OAuth

Basic scaffolding for handling OAuth

This is not yet thoroughly tested. See the docs page for an explanation of how to use this.

from IPython.display import Markdown

source

GoogleAppClient

 GoogleAppClient (client_id, client_secret, code=None, scope=None,
                  **kwargs)

A WebApplicationClient for Google oauth2


source

GitHubAppClient

 GitHubAppClient (client_id, client_secret, code=None, scope=None,
                  **kwargs)

A WebApplicationClient for GitHub oauth2


source

HuggingFaceClient

 HuggingFaceClient (client_id, client_secret, code=None, scope=None,
                    state=None, **kwargs)

A WebApplicationClient for HuggingFace oauth2


source

DiscordAppClient

 DiscordAppClient (client_id, client_secret, is_user=False, perms=0,
                   scope=None, **kwargs)

A WebApplicationClient for Discord oauth2

cli = GoogleAppClient.from_file('/Users/jhoward/git/_nbs/oauth-test/client_secret.json')

source

redir_url

 redir_url (request, redir_path, scheme='https')

Get the redir url for the host in request

@rt
def index(request):
    redir = redir_url(request, redir_path)
    return A('login', href=cli.login_link(redir), target='_blank')

source

_AppClient.parse_response

 _AppClient.parse_response (code, redirect_uri)

Get the token from the oauth2 server response


source

_AppClient.get_info

 _AppClient.get_info (token=None)

Get the info for authenticated user


source

_AppClient.retr_info

 _AppClient.retr_info (code, redirect_uri)

Combines parse_response and get_info

@rt(redir_path)
def get(request, code:str):
    redir = redir_url(request, redir_path)
    info = cli.retr_info(code, redir)
    return P(f'Login successful for {info["name"]}!')
# HTMX()
server.stop()

source

_AppClient.retr_id

 _AppClient.retr_id (code, redirect_uri)

Call retr_info and then return id/subscriber value

After logging in via the provider, the user will be redirected back to the supplied redirect URL. The request to this URL will contain a code parameter, which is used to get an access token and fetch the user’s profile information. See the explanation here for a worked example. You can either:

  • Use client.retr_info(code) to get all the profile information, or
  • Use client.retr_id(code) to get just the user’s ID.

After either of these calls, you can also access the access token (used to revoke access, for example) with client.token["access_token"].


source

url_match

 url_match (url, patterns=('^(localhost|127\\.0\\.0\\.1)(:\\d+)?$',))

source

OAuth

 OAuth (app, cli, skip=None, redir_path='/redirect', error_path='/error',
        logout_path='/logout', login_path='/login', https=True,
        http_patterns=('^(localhost|127\\.0\\.0\\.1)(:\\d+)?$',))

Initialize self. See help(type(self)) for accurate signature.