Java のクイックスタート

クイックスタートでは、Google Workspace API を呼び出すアプリを設定して実行する方法について説明します。

Google Workspace のクイックスタートでは、API クライアント ライブラリを使用して、認証と承認フローの詳細の一部を処理します。ご自身でアプリを開発する際には、このクライアント ライブラリを使用することをおすすめします。このクイックスタートでは、テスト環境に適した簡素な認証方法を使用します。本番環境では、アプリに適したアクセス認証情報を選択する前に、認証と承認について学習することをおすすめします。

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

目標

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

前提条件

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

環境の設定

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

API を有効にする

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

    API の有効化

このクイックスタートで新しい Google Cloud プロジェクトを使用する場合は、OAuth 同意画面を構成します。Cloud プロジェクトでこの手順をすでに完了している場合は、次のセクションに進みます。

  1. Google Cloud コンソールで、メニュー > > [ブランディング] に移動します。

    [ブランディング] に移動

  2. をすでに設定している場合は、[ブランディング]、[オーディエンス]、[データアクセス] で次の OAuth 同意画面の設定を構成できます。[ まだ設定されていません] というメッセージが表示された場合は、[使ってみる] をクリックします。
    1. [アプリ情報] の [アプリ名] に、アプリの名前を入力します。
    2. [ユーザー サポートメール] で、ユーザーが同意について問い合わせる際に使用するサポートのメールアドレスを選択します。
    3. [続行] をクリックします。
    4. [視聴者] で [内部] を選択します。
    5. [続行] をクリックします。
    6. [連絡先情報] で、プロジェクトの変更に関する通知を受け取るメールアドレスを入力します。
    7. [続行] をクリックします。
    8. [完了] で Google API サービスのユーザーデータに関するポリシーを確認し、同意する場合は [Google API サービス: ユーザーデータに関するポリシーに同意します] を選択します。
    9. [続行] をクリックします。
    10. [作成] をクリックします。
  3. 現時点では、スコープの追加はスキップできます。 今後、Google Workspace 組織の外部で使用するアプリを作成する場合は、[ユーザータイプ] を [外部] に変更する必要があります。次に、アプリに必要な認可スコープを追加します。詳細については、OAuth 同意画面を構成するガイドをご覧ください。

デスクトップ アプリケーションの認証情報を承認する

エンドユーザーを認証し、アプリ内のユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用します。アプリが複数のプラットフォームで実行される場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。
  1. Google Cloud コンソールで、メニュー > > [クライアント] に移動します。

    [クライアント] に移動

  2. [Create Client] をクリックします。
  3. [アプリケーションの種類] > [デスクトップ アプリ] をクリックします。
  4. [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
  5. [Create] をクリックします。

    新しく作成された認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。

  6. ダウンロードした JSON ファイルを credentials.json として保存し、ファイルを作業ディレクトリに移動します。

職場環境を整える

  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 = 'GmailPostmasterToolsQuickstart'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    version = '1.0'
    
    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-gmailpostmastertools:v1-rev20210528-1.31.0'
    }
    

サンプルのセットアップ

  1. src/main/java/ ディレクトリに、build.gradle ファイルの mainClassName 値と一致する名前の新しい Java ファイルを作成します。

  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.jackson2.JacksonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.gmailpostmastertools.v1beta1.PostmasterTools;
    import com.google.api.services.gmailpostmastertools.v1beta1.model.*;
    
    import java.io.*;
    import java.security.GeneralSecurityException;
    import java.util.Collections;
    import java.util.List;
    
    public class PostmasterToolsApiQuickStart {
        private static final String APPLICATION_NAME = "PostmasterTools API Java Quickstart";
        private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
        private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
        /**
         * Global instance of the scopes required by this quickstart.
         * If modifying these scopes, delete your previously saved tokens/ folder.
         */
        private static final List<String> SCOPES = Collections.singletonList("https://www.googleapis.com/auth/postmaster.readonly");
        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 If the credentials.json file cannot be found.
         */
        private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
            // Load client secrets.
            InputStream in = PostmasterToolsApiQuickStart.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, SCOPES)
                    .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
                    .setAccessType("offline")
                    .build();
            LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8891).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();
            PostmasterTools postmasterTools = new PostmasterTools.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                    .setApplicationName(APPLICATION_NAME)
                    .build();
    
            List<Domain> domains = postmasterTools.domains().list().execute().getDomains();
            if (domains == null || domains.isEmpty()) {
                System.out.println("No domains found!");
            } else {
                for (Domain domain : domains) {
                    System.out.println(domain.toPrettyString());
                }
            }
        }
    }
    
    

サンプルの実行

  1. サンプルを実行する

    gradle run
    
  1. サンプルを初めて実行すると、アクセスを承認するよう求められます。
    1. Google アカウントにログインしていない場合は、プロンプトが表示されたらログインします。複数のアカウントにログインしている場合は、承認に使用するアカウントを 1 つ選択します。
    2. [Accept] をクリックします。

    Java アプリケーションが実行され、Postmaster Tools API が呼び出されます。

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

次のステップ