Skip to main content

An easy interface for Microsoft Office 365 Oauth Device Code authentication.

Project description

An easy interface for Microsoft Office 365 Oauth Device Code authentication.

Install

pip install oauth_tools

Example

from oauth_tools import AuthManager
import webbrowser
import creds
import os

if not os.path.exists('users.json'):
    open('users.json', mode='wt').write(json.dumps({}))

authManager = AuthManager(
    # Get your client/tenant ID by following these instructions:
    # https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-app
    microsoftClientID=creds.clientID,
    microsoftTenantID=creds.tenantID,
)

authManager.SaveIncompleteOACallback = lambda ID, data: open('incomplete.json', mode='wt').write(
    json.dumps({ID: data}, indent=2))
authManager.GetIncompleteOACallback = lambda ID: json.loads(open('incomplete.json', mode='rt').read()).get(ID, None)

authManager.SaveToDBCallback = lambda ID, data: open('users.json', mode='wt').write(
    json.dumps({ID: data}, indent=2))
authManager.GetFromDBCallback = lambda ID: json.loads(open('users.json', mode='rt').read()).get(ID, None)

MY_ID = 'Grant'

user = authManager.GetUserByID(MY_ID)
if user is None:
    # the user has not authenticated before
    d = authManager.CreateNewUser(MY_ID)
    webbrowser.open(d['verification_uri'])
    print('Enter the code', d['user_code'])

    while True:
        time.sleep(d['interval'])
        status = authManager.CheckOAStatus(MY_ID)
        print('status=', status)
        if status == 'Success':
            break

    user = authManager.GetUserByID(MY_ID)

print('user=', user)

The output looks like

>>> Enter the code A4S4QS4EG
>>> status= Waiting for user to authenticate
>>> status= Success
>>> user= <User: ID=Grant, EmailAddress=grant@grant-miller.com, AccessToken=abcdefghijklm...>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oauth_tools-0.0.2.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

oauth_tools-0.0.2-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file oauth_tools-0.0.2.tar.gz.

File metadata

  • Download URL: oauth_tools-0.0.2.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for oauth_tools-0.0.2.tar.gz
Algorithm Hash digest
SHA256 33fa7bfd85e8d9b273088ddf07a319232b67fda5d3657500afbcdce347a145c1
MD5 c191e155c231a3908fe66c426ea93fda
BLAKE2b-256 e635e5e7d3c249462d4b0b86f812c62841625bc2159b8496a9488ee713140612

See more details on using hashes here.

File details

Details for the file oauth_tools-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: oauth_tools-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for oauth_tools-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2946839f6d21f816ac70534511f2b5b2626e1a8f6d4c183cb17a62b3adbe08c7
MD5 5beb388ab32af70edd87b50c407e626c
BLAKE2b-256 147d88a85d0885403ccdb154379730ef16fb541c24e1512f49051e63e05863ad

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page