快速入门介绍了如何设置和运行调用 Google Workspace API。
Google Workspace 快速入门使用 API 客户端库来处理一些 身份验证和授权流程的详细信息。我们建议 您需要为自己的应用使用客户端库本快速入门使用 适用于测试的简化身份验证方法 环境对于生产环境,我们建议您了解 身份验证和授权 早于 选择访问凭据 适合您应用的广告格式
创建一个向 Google Keep API 发出请求的 Java 命令行应用。
目标
- 设置环境。
- 设置示例。
- 运行该示例。
前提条件
- Java 1.8 或更高版本。
- Gradle 7.0 或更高版本。
- Google Cloud 项目。
- 已启用 Google Keep 的 Google 账号。
设置环境
如需完成本快速入门,请设置您的环境。
启用 API
在使用 Google API 之前,您需要先在 Google Cloud 项目中启用这些 API。 您可以在单个 Google Cloud 项目中启用一个或多个 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 Workspace 组织中的用户调用 API,请执行以下操作: 您需要在 Google Cloud 中 超级用户账号访问 Google Workspace 管理控制台。有关 请参阅 将全网域授权委派给服务账号。- 在 Google Cloud 控制台中,点击“菜单”图标 > IAM 和管理 > 服务账号。
- 选择您的服务账号。
- 点击显示高级设置。
- 在“全网域授权”下找到您的服务账号的“Client ID”(客户端 ID)。点击“复制”图标 以将客户端 ID 值复制到剪贴板。
如果您对相关 Google Workspace 账号拥有超级用户访问权限,请点击 查看 Google Workspace 管理控制台,然后以超级用户的身份登录 然后继续按以下步骤操作。
如果您没有相关 Google Workspace 账号的超级用户访问权限, 请与该账号的超级用户联系,并将您的服务账号的客户端 ID 发送给对方 和 OAuth 范围列表,以便他们在管理控制台中完成以下步骤。
- 在 Google 管理控制台中,点击“菜单”图标 > 安全 > 访问权限和数据控制 > API 控件。
- 点击管理全网域授权。
- 点击新增。
- 在“Client ID”(客户端 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 账号,请在系统提示时登录。如果 如果您登录了多个账号,请选择一个用于授权的账号。
- 点击接受。
您的 Java 应用会运行并调用 Google Keep API。
授权信息存储在文件系统中,因此下次运行该示例时 则系统不会提示您授权。