クイックスタートでは、 Google Workspace API
Google Workspace クイックスタートでは、API クライアント ライブラリを使用して 認証と認可のフローの詳細を確認できます。おすすめの方法 独自のアプリ用のクライアント ライブラリを使用します。このクイックスタートでは、 テストに適したシンプルな認証アプローチ できます。本番環境では、Terraform の IAM 構成の 認証と認可 次の日付より前 アクセス認証情報の選択 選択することもできます
Google Keep API にリクエストを送信する Java コマンドライン アプリケーションを作成します。
目標
- 環境を設定する。
- サンプルを設定します。
- サンプルを実行します。
前提条件
- Java 1.8 以降。
- Gradle 7.0 以降。
- Google Cloud プロジェクト。
- Google Keep が有効になっている Google アカウント。
環境の設定
このクイックスタートを完了するには、環境を設定します。
API を有効にする
Google API を使用する前に、Google Cloud プロジェクトで有効にする必要があります。 1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。Google Cloud コンソールで、Google Keep API を有効にします。
サービス アカウントを作成する
サービス アカウントは、アプリケーションで使用される特別なアカウントであり、 ありません。サービス アカウントを使用して、データへのアクセスやアクションの実行が可能 または Google Workspace に代わってデータにアクセスする権限をユーザーに付与する必要があります。 Cloud Identity ユーザーに限られます。詳細については、次をご覧ください: サービス アカウントについて。Google Cloud コンソール
- Google Cloud コンソールで、メニュー > IAM と管理 > サービス アカウント。 に移動します。
- [サービス アカウントを作成] をクリックします。
- サービス アカウントの詳細を入力し、[作成して続行] をクリックします。
- 省略可: サービス アカウントにロールを割り当てて、Google Cloud プロジェクトのリソースへのアクセス権を付与します。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
- [続行] をクリックします。
- 省略可: このサービス アカウントで管理やアクションの実行を許可するユーザーまたはグループを入力します。詳しくは、サービス アカウントの権限借用を管理するをご覧ください。
- [完了] をクリックします。サービス アカウントのメールアドレスをメモしておきます。
gcloud CLI
- サービス アカウントを作成します。
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - 省略可: サービス アカウントにロールを割り当てて、Google Cloud プロジェクトのリソースへのアクセス権を付与します。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
サービス アカウントの認証情報を作成する
公開鍵/秘密鍵のペアの形式で認証情報を取得する必要があります。これらの 使用してサービス アカウントのアクションを認可するために、 説明します。 <ph type="x-smartling-placeholder">- </ph>
- Google Cloud コンソールで、メニュー > IAM と管理 > サービス アカウント。 に移動します。
- サービス アカウントを選択します。
- [鍵] > [鍵を追加] > [新しい鍵を作成] をクリックします。
- [JSON] を選択し、[作成] をクリックします。
新しい公開鍵/秘密鍵のペアが生成され、 新しいファイルとしてエクスポートします。ダウンロードした JSON ファイルを
credentials.json
という名前で保存します。 作成されます。このファイルはこの鍵の唯一のコピーです。Google Cloud Storage バケットを 保護する方法については、以下をご覧ください。 サービス アカウント キーを管理する。 - [閉じる] をクリックします。
サービス アカウントに対してドメイン全体の委任を設定する
Google Workspace 組織のユーザーに代わって API を呼び出すには、 サービス アカウントに対して、ドメイン全体の権限の委任を付与する必要があります。 特権管理者アカウントで Google Workspace 管理コンソールにアクセスする。詳細情報 詳しくは、 サービス アカウントへのドメイン全体の権限の委任。- Google Cloud コンソールで、メニュー > IAM と管理 > サービス アカウント。 に移動します。
- サービス アカウントを選択します。
- [詳細設定を表示] をクリックします。
- [ドメイン全体の委任] でサービスアカウントの [Client-ID]を見つけます[ ] をクリックして、クライアント ID の値をクリップボードにコピーします。
関連する Google Workspace アカウントの特権管理者権限をお持ちの場合は、 Google Workspace 管理コンソールを表示し、特権管理者ユーザーとしてログインします。 次の手順に進みます。
該当する Google Workspace アカウントの特権管理者権限をお持ちでない場合は、 そのアカウントの特権管理者に連絡して、サービス アカウントのクライアント ID を送信する および OAuth スコープのリストを送信し、管理者が管理コンソールで次の手順を完了できるようにします。
- Google 管理コンソールで、メニュー アイコン > セキュリティ > アクセスとデータ管理 > API の制御。 に移動します。
- [ドメイン全体の委任を管理] をクリックします。
- [新しく追加] をクリックします。
- [クライアント ID] で、フィールドに、先ほどコピーしたクライアント ID を貼り付けます。
- [OAuth スコープ] 内フィールドに、アプリケーションに必要なスコープのカンマ区切りリストを入力します。これは、OAuth 同意画面の設定時に定義したスコープのセットと同じです。
- [承認] をクリックします。
職場環境を整える
作業ディレクトリで、新しいプロジェクト構造を作成します。
gradle init --type basic mkdir -p src/main/java src/main/resources
src/main/resources/
ディレクトリで、credentials.json
ファイルをコピーします。 画像が表示されます。デフォルトの
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' }
サンプルのセットアップ
src/main/java/
ディレクトリに、次の名前の新しい Java ファイルを作成します。 これは、build.gradle
ファイルのmainClassName
値と一致します。新しい 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(); } }
サンプルの実行
サンプルを実行する
gradle run
-
サンプルを初めて実行すると、アクセスの承認を求められます。
<ph type="x-smartling-placeholder">
- </ph>
- Google アカウントにまだログインしていない場合は、ログインを求められたらログインします。条件 複数のアカウントにログインしている場合は、承認に使用するアカウントを 1 つ選択してください。
- [Accept] をクリックします。
Java アプリケーションが Google Keep API を実行し、呼び出します。
認証情報はファイル システムに保存されるため、次回サンプルを実行する際に 承認を求められることはありません。
次のステップ
- 認証と認可に関する問題のトラブルシューティング
- Google Keep API リファレンス ドキュメント
- Java 用 Google API クライアントのドキュメント
- Google Keep API の Javadoc ドキュメント