Authentication

Helpers for creating GitHub API tokens

Scopes


source

scope_str

 scope_str (*scopes)

Convert scopes into a comma-separated string

scope_str(Scope.repo,Scope.admin_public_key,Scope.public_repo)
'repo,admin:public_key,public_repo'

source

GhDeviceAuth

 GhDeviceAuth (client_id='71604a89b882ab8c8634', *scopes)

Get an oauth token using the GitHub API device flow

Creating a GhDeviceAuth will complete the first step in the GitHub API device flow, getting device and user codes.

ghauth = GhDeviceAuth()
ghauth.device_code,ghauth.user_code
('62956bc850018fb2e5c4b62501df72bbe5583a5a', '247D-B1A6')

source

GhDeviceAuth.url_docs

 GhDeviceAuth.url_docs ()

Default instructions on how to authenticate

You can provide your own instructions on how to authenticate, or just print this out:

print(ghauth.url_docs())
First copy your one-time code: 247D-B1A6
Then visit https://github.com/login/device in your browser, and paste the code when prompted.

source

GhDeviceAuth.open_browser

 GhDeviceAuth.open_browser ()

Open a web browser with the verification URL

This uses Python’s webbrowser.open, which will use the user’s default web browser. This won’t work well if the user is using a remote terminal.


source

GhDeviceAuth.auth

 GhDeviceAuth.auth ()

Return token if authentication complete, or None otherwise

Until the user has completed authentication in the browser, this will return None. Normally, you won’t call this directly, but will call wait (see below), which will repeatedly call auth until authentication is complete.

print(ghauth.auth())
None

source

GhDeviceAuth.wait

 GhDeviceAuth.wait (cb:<built-infunctioncallable>=None, n_polls=9999)

Wait up to n_polls times for authentication to complete, calling cb after each poll, if passed

If you pass a callback to cb, it will be called after each unsuccessful check for user authentication. For instance, to print a . to the screen after each poll, and store the token in a variable token when complete, you could use:

token = ghauth.wait(lambda: print('.', end=''))

source

github_auth_device

 github_auth_device (wb='', n_polls=9999)

Authenticate with GitHub, polling up to n_polls times to wait for completion

When we run this we’ll be shown a URL to visit and a code to enter in order to authenticate. Normally we’ll be prompted to open a browser, and the function will wait for authentication to complete – for demonstrating here we’ll skip both of these steps:

github_auth_device('n',n_polls=0)
First copy your one-time code: 4ACE-3C18
Then visit https://github.com/login/device in your browser, and paste the code when prompted.
Waiting for authorization...Authentication not complete!