Crea un'applicazione a riga di comando Java che effettua richieste all'API Google Keep.
Le guide rapide spiegano come configurare ed eseguire un'app che chiama un'API Google Workspace. Questa guida rapida utilizza un approccio di autenticazione semplificato adatto a un ambiente di test. Per un ambiente di produzione, ti consigliamo di scoprire di più su autenticazione e autorizzazione prima di scegliere le credenziali di accesso adatte alla tua app.
Questa guida rapida utilizza le librerie client API consigliate di Google Workspace per gestire alcuni dettagli del flusso di autenticazione e autorizzazione.
Obiettivi
- Configurare l'ambiente.
- Configura il campione.
- Esegui il campione.
Prerequisiti
- Java 11 o versioni successive.
- Gradle 7.0 o versioni successive.
- Un progetto Google Cloud.
- Un Account Google con Google Keep attivato.
Configura l'ambiente
Per completare questa guida rapida, configura il tuo ambiente.
Abilita l'API
Prima di utilizzare le API di 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 Keep.
Crea un account di servizio
Un service account è un tipo speciale di account utilizzato da un'applicazione, anziché da una persona. Puoi utilizzare un service account per accedere ai dati o eseguire azioni tramite l'account robot oppure per accedere ai dati per conto degli utenti di Google Workspace o Cloud Identity. Per saperne di più, consulta Informazioni sui service account.Console Google Cloud
- Nella console Google Cloud, vai a Menu > IAM e amministrazione > Service account.
- Fai clic su Crea account di servizio.
- Inserisci i dettagli del service account, quindi fai clic su Crea e continua.
- (Facoltativo) Assegna ruoli al tuo service account per concedere l'accesso alle risorse del tuo progetto Google Cloud. Per ulteriori dettagli, consulta Concessione, modifica e revoca dell'accesso alle risorse.
- Fai clic su Continua.
- (Facoltativo) Inserisci gli utenti o i gruppi che possono gestire ed eseguire azioni con questo service account. Per maggiori dettagli, consulta Gestione dell'impersonificazione degli account di servizio.
- Fai clic su Fine. Prendi nota dell'indirizzo email del service account.
Interfaccia a riga di comando gcloud
- Crea l'account di servizio:
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - (Facoltativo) Assegna ruoli al tuo service account per concedere l'accesso alle risorse del tuo progetto Google Cloud. Per ulteriori dettagli, consulta Concessione, modifica e revoca dell'accesso alle risorse.
Crea le credenziali per un service account
Devi ottenere le credenziali sotto forma di coppia di chiavi pubblica/privata. Queste credenziali vengono utilizzate dal codice per autorizzare le azioni del service account all'interno della tua app.- Nella console Google Cloud, vai a Menu > IAM e amministrazione > Service account.
- Seleziona il tuo service account.
- Fai clic su Chiavi > Aggiungi chiave > Crea nuova chiave.
- Seleziona JSON, quindi fai clic su Crea.
Una nuova coppia di chiavi pubblica/privata viene generata e scaricata sul tuo computer come nuovo file. Salva il file JSON scaricato come
credentials.json
nella directory di lavoro. Questo file è l'unica copia di questa chiave. Per informazioni su come archiviare la chiave in modo sicuro, consulta la sezione Gestione delle chiavi degli account di servizio. - Fai clic su Chiudi.
Configurare la delega a livello di dominio per un service account
Per chiamare le API per conto degli utenti di un'organizzazione Google Workspace, al tuo service account deve essere concessa la delega dell'autorità a livello di dominio nella Console di amministrazione Google Workspace da un account super amministratore. Per ulteriori informazioni, vedi Delega dell'autorità a livello di dominio a un service account.- Nella console Google Cloud, vai a Menu > IAM e amministrazione > Service account.
- Seleziona il tuo service account.
- Fai clic su Mostra impostazioni avanzate.
- Nella sezione "Delega a livello di dominio", trova l'ID client del tuo account di servizio. Fai clic su Copia per copiare il valore dell'ID client negli appunti.
Se disponi dell'accesso super amministratore all'account Google Workspace pertinente, fai clic su Visualizza la Console di amministrazione Google Workspace, poi accedi utilizzando un account utente super amministratore e continua a seguire questi passaggi.
Se non disponi dell'accesso super amministratore all'account Google Workspace pertinente, contatta un super amministratore per quell'account e inviagli l'ID client del tuo service account e l'elenco degli ambiti OAuth in modo che possa completare i seguenti passaggi nella Console di amministrazione.
- Nella Console di amministrazione Google, vai a Menu > Sicurezza > Accesso e controllo dei dati > Controlli API.
- Fai clic su Gestisci delega a livello di dominio.
- Fai clic su Aggiungi nuova.
- Nel campo "ID client", incolla l'ID client che hai copiato in precedenza.
- Nel campo "Ambiti OAuth", inserisci un elenco delimitato da virgole degli ambiti richiesti dalla tua applicazione. Si tratta dello stesso insieme di ambiti che hai definito durante la configurazione della schermata per il consenso OAuth.
- Fai clic su Autorizza.
Preparare lo spazio di lavoro
Nella directory di lavoro, crea una nuova struttura di progetto:
gradle init --type basic mkdir -p src/main/java src/main/resources
Nella directory
src/main/resources/
, copia il filecredentials.json
che hai scaricato in precedenza.Apri il file
build.gradle
predefinito e sostituisci i contenuti con il seguente codice:apply plugin: 'java' apply plugin: 'application' mainClassName = 'KeepQuickstart' sourceCompatibility = 1.8 targetCompatibility = 1.8 version = '1.0' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { implementation 'com.google.api-client:google-api-client:1.23.0' implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0' implementation 'com.google.apis:google-api-services-keep:v1-rev20210528-1.31.0' }
Configura il campione
Nella directory
src/main/java/
, crea un nuovo file Java con un nome che corrisponda al valoremainClassName
nel filebuild.gradle
.Includi il seguente codice nel nuovo file Java:
import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.keep.v1.Keep; import com.google.api.services.keep.v1.model.Note; import com.google.api.services.keep.v1.model.Section; import com.google.api.services.keep.v1.model.TextContent; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.Collections; import java.util.List; public class KeepQuickstart { private static final String APPLICATION_NAME = "Google Keep API Java Quickstart"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); /** * Global instance of the scopes required by this quickstart. If modifying these scopes, delete * your previously saved tokens/ folder. */ private static final List<String> KEEP_SCOPES = Collections.singletonList("https://www.googleapis.com/auth/keep"); private static final String CREDENTIALS_FILE_PATH = "/credentials.json"; /** * Creates an authorized Credential object. * * @param HTTP_TRANSPORT The network HTTP Transport. * @return An authorized Credential object. * @throws IOException */ private static Credential getOAuthCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException { // Load client secrets. InputStream in = KeepQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH); if (in == null) { throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); } GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, KEEP_SCOPES) .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens"))) .setAccessType("offline") .build(); LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build(); return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); } public static void main(String... args) throws IOException, GeneralSecurityException { // Build a new authorized API client service. final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); Keep service = new Keep.Builder(HTTP_TRANSPORT, JSON_FACTORY, getOAuthCredentials(HTTP_TRANSPORT)) .setApplicationName(APPLICATION_NAME) .build(); Section noteBody = new Section().setText(new TextContent().setText("Finish preparations by tomorrow!")); Note newNote = new Note().setTitle("Customer call next week").setBody(noteBody); // Creates a new text note. service.notes().create(newNote).execute(); } }
Esegui il campione
Esegui l'esempio:
gradle run
-
La prima volta che esegui l'esempio, ti viene chiesto di autorizzare l'accesso:
- Se non l'hai ancora fatto, accedi al tuo Account Google quando richiesto. Se hai eseguito l'accesso a più account, seleziona un account da utilizzare per l'autorizzazione.
- Fai clic su Accetto.
La tua applicazione Java viene eseguita e chiama l'API Google Keep.
Le informazioni di autorizzazione vengono archiviate nel file system, quindi la volta successiva che esegui il codice di esempio non ti viene chiesto di autorizzare.
Passaggi successivi
- Prova le API Google Workspace in Explorer API
- Risolvere i problemi di autenticazione e autorizzazione
- Documentazione di riferimento dell'API Google Keep
- Documentazione del client delle API di Google per Java
- Documentazione Javadoc dell'API Google Keep