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

If you're not sure about the file name format, learn more about wheel file names.

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 Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page