Java のクイックスタート

クイックスタートでは、 Google Workspace API

Google Workspace クイックスタートでは、API クライアント ライブラリを使用して 認証と認可のフローの詳細を確認できます。おすすめの方法 独自のアプリ用のクライアント ライブラリを使用します。このクイックスタートでは、 テストに適したシンプルな認証アプローチ できます。本番環境では、Terraform の IAM 構成の 認証と認可 次の日付より前 アクセス認証情報の選択 選択することもできます

Google Keep API にリクエストを送信する Java コマンドライン アプリケーションを作成します。

目標

  • 環境を設定する。
  • サンプルを設定します。
  • サンプルを実行します。

前提条件

  • Google Keep が有効になっている Google アカウント。

環境の設定

このクイックスタートを完了するには、環境を設定します。

API を有効にする

Google API を使用する前に、Google Cloud プロジェクトで有効にする必要があります。 1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。
  • Google Cloud コンソールで、Google Keep API を有効にします。

    API の有効化

サービス アカウントを作成する

サービス アカウントは、アプリケーションで使用される特別なアカウントであり、 ありません。サービス アカウントを使用して、データへのアクセスやアクションの実行が可能 または Google Workspace に代わってデータにアクセスする権限をユーザーに付与する必要があります。 Cloud Identity ユーザーに限られます。詳細については、次をご覧ください: サービス アカウントについて

Google Cloud コンソール

  1. Google Cloud コンソールで、メニュー に移動します。 > IAM と管理 > サービス アカウント

    [サービス アカウント] に移動

  2. [サービス アカウントを作成] をクリックします。
  3. サービス アカウントの詳細を入力し、[作成して続行] をクリックします。
  4. 省略可: サービス アカウントにロールを割り当てて、Google Cloud プロジェクトのリソースへのアクセス権を付与します。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
  5. [続行] をクリックします。
  6. 省略可: このサービス アカウントで管理やアクションの実行を許可するユーザーまたはグループを入力します。詳しくは、サービス アカウントの権限借用を管理するをご覧ください。
  7. [完了] をクリックします。サービス アカウントのメールアドレスをメモしておきます。

gcloud CLI

  1. サービス アカウントを作成します。
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. 省略可: サービス アカウントにロールを割り当てて、Google Cloud プロジェクトのリソースへのアクセス権を付与します。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。

サービス アカウントの認証情報を作成する

公開鍵/秘密鍵のペアの形式で認証情報を取得する必要があります。これらの 使用してサービス アカウントのアクションを認可するために、 説明します。 <ph type="x-smartling-placeholder">
    </ph>
  1. Google Cloud コンソールで、メニュー に移動します。 &gt; IAM と管理 &gt; サービス アカウント

    [サービス アカウント] に移動

  2. サービス アカウントを選択します。
  3. [] &gt; [鍵を追加] &gt; [新しい鍵を作成] をクリックします。
  4. [JSON] を選択し、[作成] をクリックします。

    新しい公開鍵/秘密鍵のペアが生成され、 新しいファイルとしてエクスポートします。ダウンロードした JSON ファイルを credentials.json という名前で保存します。 作成されます。このファイルはこの鍵の唯一のコピーです。Google Cloud Storage バケットを 保護する方法については、以下をご覧ください。 サービス アカウント キーを管理する

  5. [閉じる] をクリックします。

サービス アカウントに対してドメイン全体の委任を設定する

Google Workspace 組織のユーザーに代わって API を呼び出すには、 サービス アカウントに対して、ドメイン全体の権限の委任を付与する必要があります。 特権管理者アカウントで Google Workspace 管理コンソールにアクセスする。詳細情報 詳しくは、 サービス アカウントへのドメイン全体の権限の委任
  1. Google Cloud コンソールで、メニュー に移動します。 &gt; IAM と管理 &gt; サービス アカウント

    [サービス アカウント] に移動

  2. サービス アカウントを選択します。
  3. [詳細設定を表示] をクリックします。
  4. [ドメイン全体の委任] でサービスアカウントの [Client-ID]を見つけます[] をクリックして、クライアント ID の値をクリップボードにコピーします。
  5. 関連する Google Workspace アカウントの特権管理者権限をお持ちの場合は、 Google Workspace 管理コンソールを表示し、特権管理者ユーザーとしてログインします。 次の手順に進みます。

    該当する Google Workspace アカウントの特権管理者権限をお持ちでない場合は、 そのアカウントの特権管理者に連絡して、サービス アカウントのクライアント ID を送信する および OAuth スコープのリストを送信し、管理者が管理コンソールで次の手順を完了できるようにします。

    1. Google 管理コンソールで、メニュー アイコン に移動します。 &gt; セキュリティ &gt; アクセスとデータ管理 &gt; API の制御

      [API の制御] に移動

    2. [ドメイン全体の委任を管理] をクリックします。
    3. [新しく追加] をクリックします。
    4. [クライアント ID] で、フィールドに、先ほどコピーしたクライアント ID を貼り付けます。
    5. [OAuth スコープ] 内フィールドに、アプリケーションに必要なスコープのカンマ区切りリストを入力します。これは、OAuth 同意画面の設定時に定義したスコープのセットと同じです。
    6. [承認] をクリックします。

職場環境を整える

  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 ファイルを作成します。 これは、build.gradle ファイルの mainClassName 値と一致します。

  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. サンプルを初めて実行すると、アクセスの承認を求められます。 <ph type="x-smartling-placeholder">
      </ph>
    1. Google アカウントにまだログインしていない場合は、ログインを求められたらログインします。条件 複数のアカウントにログインしている場合は、承認に使用するアカウントを 1 つ選択してください。
    2. [Accept] をクリックします。

    Java アプリケーションが Google Keep API を実行し、呼び出します。

    認証情報はファイル システムに保存されるため、次回サンプルを実行する際に 承認を求められることはありません。

次のステップ