Koppelingen met behulp van Python – deel 1

Een van de projecten waar ik nu mee bezig ben is om data uit een leerlingenadministratiepakket via een zelfgehostte database naar de Google Directory en later de Active Directory te krijgen. Ik heb gekozen om dit te doen op basis van Python. Het eerste script dat ik gemaakt heb is bedoeld om data uit het administratieve pakket te krijgen en in de database te zetten. Dit beschijf ik later. Hieronder mijn eerste stappen om te koppelen met Google.
Ten eerste installeren we een CentOS 8 server.
Zorg dat je een gebruiker hebt die sudo kan gebruiken (zet hem in de wheel groep). Installeer als root dus sudo en vim, dat is ook altijd handig.

yum install sudo vim

De volgende stappen doen we dus allemaal als gewone user. Als eerste installeren we python en pip

sudo yum install python3 python3-pip

sudo pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib autopep8

Ga naar de website https://developers.google.com/admin-sdk/directory/v1/quickstart/python en klik daar op Enable Directory API. Volg de stappen en je krijgt een credentials.json file die je opslaat.

Nu is het belangrijk dat je op een computer werkt waar je de beschikking hebt over een webbrowser. Het creeeren van de token.pickle file die je nog hebt, vereist namelijk een browser met javascript. Ik ga er dus vanuit dat je bovenstaande en onderstaande script uitvoert op een computer met een webbrowser. Als je eenmaal de credentials.json en token.pickle file hebt is een webbrowser niet meer nodig.
In het volgende script is het belangrijk om goed te kijken naar de SCOPES. Dit zijn namelijk de scopes waar je rechten voor gaat krijgen.
Als je beheer wil doen op de Google Directory zijn dit de belangrijke scopes:

Voor user management: https://www.googleapis.com/auth/admin.directory.user
Voor group management: https://www.googleapis.com/auth/admin.directory.group
Voor Org. Unit. management: https://www.googleapis.com/auth/admin.directory.orgunit

Maak een nieuw bestand aan genaamd quickstart.py
vim quickstart.py
en kopieer daar het volgende in:

from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user']

def main():
    """Shows basic usage of the Admin SDK Directory API.
    Prints the emails and names of the first 10 users in the domain.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('admin', 'directory_v1', credentials=creds)

    # Call the Admin SDK Directory API
    print('Getting the first 10 users in the domain')
    results = service.users().list(customer='my_customer', maxResults=10,
                                orderBy='email').execute()
    users = results.get('users', [])

    if not users:
        print('No users in the domain.')
    else:
        print('Users:')
        for user in users:
            print(u'{0} ({1})'.format(user['primaryEmail'],
                user['name']['fullName']))


if __name__ == '__main__':
    main()

We voeren nu dit python script uit.
python3 quickstart.py
De eerste keer dat je dit script uitvoert, wordt je naar een website geleid, en wordt er een token.pickle file aangemaakt in de directory waar je het script start. Deze, samen met de credentials.json heb je nodig om te kunnen connecten met de Google API

Na het aanmaken van de token.pickle file wordt ook de rest van het script uitgevoerd en verschijnt een lijst met de eerste 10 accounts in je Google directory. Dit is het begin punt van onze reis in de Google API wereld