Guida rapida di Python

Le rapide spiegano come configurare ed eseguire un'app che chiama un'API Google Workspace.

I comandi iniziali di Google Workspace utilizzano le librerie client API per gestire alcuni dettagli del flusso di autenticazione e autorizzazione. Ti consigliamo di utilizzare le librerie client per le tue app. Questa guida rapida utilizza un approccio di autenticazione semplificato, appropriato per un ambiente di test. Per un ambiente di produzione, ti consigliamo di informarti sull'autenticazione e l'autorizzazione prima di scegliere le credenziali di accesso appropriate per la tua app.

Crea un'applicazione a riga di comando Python che invii richieste all'API Google Drive Activity.

Obiettivi

  • Configurare l'ambiente.
  • Installa la libreria client.
  • Configura il Sample.
  • Esegui il sample.

Prerequisiti

Per eseguire questa guida rapida, sono necessari i seguenti prerequisiti:

  • Un Account Google.

Configura l'ambiente

Per completare questa guida rapida, configura l'ambiente.

Abilita l'API

Prima di utilizzare le API Google, devi attivarle in un progetto Google Cloud. Puoi attivare una o più API in un singolo progetto Google Cloud.
  • Nella console Google Cloud, abilita l'API Google Drive Activity.

    Attiva l'API

Se utilizzi un nuovo progetto Google Cloud per completare questa guida rapida, configura la schermata di consenso di OAuth e aggiungi te stesso come utente di test. Se hai già completato questo passaggio per il tuo progetto Cloud, vai alla sezione successiva.

  1. Nella console Google Cloud, vai a Menu > API e servizi > Schermata del consenso OAuth.

    Vai alla schermata per il consenso OAuth

  2. In Tipo di utente, seleziona Interno e poi fai clic su Crea.
  3. Completa il modulo di registrazione dell'app, quindi fai clic su Salva e continua.
  4. Per il momento, puoi saltare l'aggiunta di ambiti e fare clic su Salva e continua. In futuro, quando crei un'app da utilizzare al di fuori della tua organizzazione Google Workspace, devi modificare il Tipo di utente in Esterno, quindi aggiungere gli ambiti di autorizzazione richiesti dalla tua app.

  5. Rivedi il riepilogo della registrazione dell'app. Per apportare modifiche, fai clic su Modifica. Se la registrazione dell'app sembra corretta, fai clic su Torna alla dashboard.

Autorizzare le credenziali per un'applicazione desktop

Per autenticare gli utenti finali e accedere ai dati utente nella tua app, devi creare uno o più ID client OAuth 2.0. L'ID client viene utilizzato per identificare una singola app nei server OAuth di Google. Se l'app viene eseguita su più piattaforme, devi creare un ID client separato per ogni piattaforma.
  1. Nella console Google Cloud, vai a Menu > API e servizi > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali > ID client OAuth.
  3. Fai clic su Tipo di applicazione > App desktop.
  4. Nel campo Nome, digita un nome per la credenziale. Questo nome viene visualizzato solo nella console Google Cloud.
  5. Fai clic su Crea. Viene visualizzata la schermata del client OAuth creato, che mostra il nuovo ID client e il nuovo client secret.
  6. Fai clic su OK. La credenziale appena creata viene visualizzata in ID client OAuth 2.0.
  7. Salva il file JSON scaricato come credentials.json e spostalo nella directory di lavoro.

Installa la libreria client Google

  • Installa la libreria client di Google per Python:

    pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
    

Configura il Sample

  1. Nella directory di lavoro, crea un file denominato quickstart.py.
  2. Includi il seguente codice in quickstart.py:

    drive/activity-v2/quickstart.py
    import os.path
    
    from google.auth.transport.requests import Request
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    
    # If modifying these scopes, delete the file token.json.
    SCOPES = ["https://www.googleapis.com/auth/drive.activity.readonly"]
    
    
    def main():
      """Shows basic usage of the Drive Activity API.
    
      Prints information about the last 10 events that occured the user's Drive.
      """
      creds = None
      # The file token.json 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.json"):
        creds = Credentials.from_authorized_user_file("token.json", SCOPES)
      # 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.json", "w") as token:
          token.write(creds.to_json())
    
      service = build("driveactivity", "v2", credentials=creds)
    
      # Call the Drive Activity API
      try:
        results = service.activity().query(body={"pageSize": 10}).execute()
        activities = results.get("activities", [])
    
        if not activities:
          print("No activity.")
        else:
          print("Recent activity:")
          for activity in activities:
            time = getTimeInfo(activity)
            action = getActionInfo(activity["primaryActionDetail"])
            actors = map(getActorInfo, activity["actors"])
            targets = map(getTargetInfo, activity["targets"])
            actors_str, targets_str = "", ""
            actor_name = actors_str.join(actors)
            target_name = targets_str.join(targets)
    
            # Print the action occurred on drive with actor, target item and timestamp
            print(f"{time}: {action}, {actor_name}, {target_name}")
    
      except HttpError as error:
        # TODO(developer) - Handleerrors from drive activity API.
        print(f"An error occurred: {error}")
    
    
    # Returns the name of a set property in an object, or else "unknown".
    def getOneOf(obj):
      for key in obj:
        return key
      return "unknown"
    
    
    # Returns a time associated with an activity.
    def getTimeInfo(activity):
      if "timestamp" in activity:
        return activity["timestamp"]
      if "timeRange" in activity:
        return activity["timeRange"]["endTime"]
      return "unknown"
    
    
    # Returns the type of action.
    def getActionInfo(actionDetail):
      return getOneOf(actionDetail)
    
    
    # Returns user information, or the type of user if not a known user.
    def getUserInfo(user):
      if "knownUser" in user:
        knownUser = user["knownUser"]
        isMe = knownUser.get("isCurrentUser", False)
        return "people/me" if isMe else knownUser["personName"]
      return getOneOf(user)
    
    
    # Returns actor information, or the type of actor if not a user.
    def getActorInfo(actor):
      if "user" in actor:
        return getUserInfo(actor["user"])
      return getOneOf(actor)
    
    
    # Returns the type of a target and an associated title.
    def getTargetInfo(target):
      if "driveItem" in target:
        title = target["driveItem"].get("title", "unknown")
        return f'driveItem:"{title}"'
      if "drive" in target:
        title = target["drive"].get("title", "unknown")
        return f'drive:"{title}"'
      if "fileComment" in target:
        parent = target["fileComment"].get("parent", {})
        title = parent.get("title", "unknown")
        return f'fileComment:"{title}"'
      return f"{getOneOf(target)}:unknown"
    
    
    if __name__ == "__main__":
      main()

Esegui il sample

  1. Nella directory di lavoro, compila ed esegui l'esempio:

    python3 quickstart.py
    
  1. La prima volta che esegui il sample, ti viene chiesto di autorizzare l'accesso:
    1. Se non hai ancora eseguito l'accesso al tuo Account Google, accedi quando richiesto. Se hai eseguito l'accesso a più account, selezionane uno da utilizzare per l'autorizzazione.
    2. Fai clic su Accept (accetta).

    L'applicazione Python viene eseguita e chiama l'API Google Drive Activity.

    Le informazioni di autorizzazione vengono memorizzate nel file system, quindi la volta successiva che esegui il codice di esempio non ti verrà richiesta l'autorizzazione.

Passaggi successivi