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

_AppClient.parse_response

 _AppClient.parse_response (code, redirect_uri)

Get the token from the oauth2 server response


source

decode

 decode (code_url)
code_url = 'http://localhost:8000/redirect?state=test_state&code=4%2F0AQlEd8xCOSfc7yjmmylO6BTVgWtAmji4GkfITsWecq0CXlm-8wBRgwNmkDmXQEdOqw0REQ&scope=email+profile+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&hd=answer.ai&prompt=consent'

code,state,redir = decode(code_url)
cli.parse_response(code, redir)
print(state)
test_state

source

_AppClient.get_info

 _AppClient.get_info (token=None)

Get the info for authenticated user

info
{'sub': '100000802623412015452',
 'name': 'Jeremy Howard',
 'given_name': 'Jeremy',
 'family_name': 'Howard',
 'picture': 'https://lh3.googleusercontent.com/a/ACg8ocID3bYiwh1wJNVjvlSUy0dGxvXbNjDt1hdhypQDinDf28DfEA=s96-c',
 'email': '[email protected]',
 'email_verified': True,
 'hd': 'answer.ai'}

source

_AppClient.retr_info

 _AppClient.retr_info (code, redirect_uri)

Combines parse_response and get_info


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

OAuth

 OAuth (app, cli, skip=None, redir_path='/redirect',
        logout_path='/logout', login_path='/login')

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