מדריך למתחילים ב-Java

יוצרים אפליקציית שורת פקודה ב-Java ששולחת בקשות אל Google Keep API.

במדריכים למתחילים מוסבר איך להגדיר ולהריץ אפליקציה שקוראת ל-Google Workspace API. בהוראות האלה להתחלה מהירה נעשה שימוש בגישה פשוטה לאימות, שמתאימה לסביבת בדיקה. בסביבת ייצור, מומלץ לקרוא על אימות והרשאה לפני בחירת פרטי הגישה שמתאימים לאפליקציה שלכם.

במדריך הזה לומדים איך להשתמש בספריות הלקוח המומלצות של Google Workspace API כדי לטפל בחלק מהפרטים של תהליך האימות וההרשאה.

מטרות

  • מגדירים את הסביבה.
  • מגדירים את הדוגמית.
  • מריצים את הדוגמה.

דרישות מוקדמות

  • חשבון Google שבו מופעל Google Keep.

הגדרת הסביבה

כדי להשלים את המדריך למתחילים הזה, צריך להגדיר את הסביבה.

הפעלת ה-API

לפני שמשתמשים בממשקי Google API, צריך להפעיל אותם בפרויקט ב-Google Cloud. אפשר להפעיל ממשק API אחד או יותר בפרויקט יחיד ב-Google Cloud.

יצירה של חשבון שירות

חשבון שירות הוא סוג מיוחד של חשבון, שאפליקציה (ולא אדם) משתמשת בו. אפשר להשתמש בחשבון שירות כדי לגשת לנתונים או לבצע פעולות באמצעות חשבון הרובוט, או כדי לגשת לנתונים בשם משתמשי Google Workspace או Cloud Identity. מידע נוסף זמין במאמר עבודה עם חשבון שירות.

מסוף Google Cloud

  1. במסוף Google Cloud, לוחצים על סמל התפריט > IAM & Admin > Service Accounts (חשבונות שירות).

    לדף Service accounts

  2. לוחצים על יצירת חשבון שירות.
  3. ממלאים את פרטי חשבון השירות ולוחצים על יצירה והמשך.
  4. אופציונלי: מקצים תפקידים לחשבון השירות כדי לתת גישה למשאבים בפרויקט Google Cloud. פרטים נוספים זמינים במאמר הענקה, שינוי וביטול גישה למשאבים.
  5. לוחצים על המשך.
  6. אופציונלי: מזינים משתמשים או קבוצות שיכולים לנהל את חשבון השירות הזה ולבצע בו פעולות. פרטים נוספים זמינים במאמר ניהול התחזות לחשבון שירות.
  7. לוחצים על סיום. רושמים את כתובת האימייל של חשבון השירות.

CLI של gcloud

  1. יוצרים את חשבון השירות:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. אופציונלי: מקצים תפקידים לחשבון השירות כדי לתת גישה למשאבים בפרויקט Google Cloud. פרטים נוספים זמינים במאמר הענקה, שינוי וביטול גישה למשאבים.

יצירת פרטי כניסה לחשבון שירות

צריך לקבל אישורים בצורה של זוג מפתחות ציבורי/פרטי. הקוד משתמש באמצעי האימות האלה כדי לאשר פעולות של חשבון שירות באפליקציה.
  1. במסוף Google Cloud, לוחצים על סמל התפריט > IAM & Admin > Service Accounts (חשבונות שירות).

    לדף Service accounts

  2. בוחרים את חשבון השירות.
  3. לוחצים על מפתחות > הוספת מפתח > יצירת מפתח חדש.
  4. בוחרים באפשרות JSON ולוחצים על Create.

    זוג המפתחות הציבורי/הפרטי החדש נוצר ומורד למחשב שלכם כקובץ חדש. שומרים את קובץ ה-JSON שהורדתם בשם credentials.json בספריית העבודה. הקובץ הזה הוא העותק היחיד של המפתח. מידע על אחסון מאובטח של המפתח זמין במאמר ניהול מפתחות לחשבונות שירות.

  5. לוחצים על סגירה.

הגדרה של הענקת גישה ברמת הדומיין לחשבון שירות

כדי לבצע קריאות ל-API בשם משתמשים בארגון Google Workspace, צריך להעניק לחשבון השירות הרשאת גישה ברמת הדומיין במסוף Google Admin באמצעות חשבון סופר-אדמין. למידע נוסף, קראו את המאמר בנושא הענקת הרשאה ברמת הדומיין לחשבון שירות.
  1. במסוף Google Cloud, לוחצים על סמל התפריט > IAM & Admin > Service Accounts (חשבונות שירות).

    לדף Service accounts

  2. בוחרים את חשבון השירות.
  3. לוחצים על הצגת הגדרות מתקדמות.
  4. בקטע 'הענקת גישה ברמת הדומיין', מחפשים את 'מזהה הלקוח' של חשבון השירות. לוחצים על סמל ההעתקה כדי להעתיק את הערך של מזהה הלקוח ללוח.
  5. אם יש לכם גישת סופר-אדמין לחשבון Google Workspace הרלוונטי, לוחצים על הצגת מסוף Admin ב-Google Workspace, נכנסים באמצעות חשבון משתמש סופר-אדמין וממשיכים לפעול לפי השלבים האלה.

    אם אין לכם הרשאת סופר-אדמין בחשבון Google Workspace הרלוונטי, צרו קשר עם סופר-אדמין בחשבון הזה ושלחו לו את מזהה הלקוח של חשבון השירות ואת רשימת היקפי ההרשאות של OAuth, כדי שהוא יוכל לבצע את השלבים הבאים במסוף Admin.

    1. במסוף Google Admin, לוחצים על סמל התפריט > אבטחה > שליטה בגישה ובנתונים > אמצעי בקרה של API.

      מעבר אל אמצעי בקרה לממשקי API

    2. לוחצים על ניהול של הענקת גישה ברמת הדומיין.
    3. לוחצים על הוספת חדש.
    4. בשדה Client ID (מזהה הלקוח), מדביקים את מזהה הלקוח שהעתקתם קודם.
    5. בשדה 'היקפי הרשאות של OAuth', מזינים רשימה של היקפי ההרשאות שנדרשים לאפליקציה, כשהם מופרדים בפסיקים. זוהי אותה קבוצה של היקפי הרשאות שהגדרתם כשקבעתם את מסך ההסכמה של OAuth.
    6. לוחצים על Authorize.

הכנת סביבת העבודה

  1. בספריית העבודה, יוצרים מבנה פרויקט חדש:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. בספרייה src/main/resources/, מעתיקים את הקובץ credentials.json שהורדתם קודם.

  3. פותחים את קובץ ברירת המחדל build.gradle ומחליפים את התוכן שלו בקוד הבא:

      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'
    }
    

הגדרת הדוגמית

  1. בספרייה src/main/java/, יוצרים קובץ Java חדש עם שם שזהה לערך mainClassName בקובץ build.gradle.

  2. מוסיפים את הקוד הבא לקובץ ה-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();
      }
    }
    
    

הרצת הדוגמה

  1. מריצים את הדוגמה:

    gradle run
    
  1. בפעם הראשונה שמריצים את הדוגמה, מוצגת בקשה לאישור הגישה:
    1. אם עדיין לא נכנסתם לחשבון Google, תתבקשו להיכנס אליו. אם נכנסתם לכמה חשבונות, בוחרים חשבון אחד שבו רוצים להשתמש לצורך הרשאה.
    2. לוחצים על אישור.

    אפליקציית Java פועלת ושולחת קריאה ל-Google Keep API.

    פרטי ההרשאה מאוחסנים במערכת הקבצים, כך שבפעם הבאה שתריצו את הקוד לדוגמה לא תתבקשו לאשר הרשאה.

השלבים הבאים