快速入門導覽課程說明如何設定及執行會呼叫 Google Workspace API
Google Workspace 快速入門導覽課程會使用 API 用戶端程式庫 驗證和授權流程的詳細資訊建議做法 您為自己的應用程式使用用戶端程式庫本快速入門導覽課程會使用 適合用於測試的簡易驗證方式 環境。在正式環境中,建議您瞭解 驗證與授權 再 選擇存取認證 挑選適合您應用程式的語言版本
建立 Java 指令列應用程式,向 Google Keep API 提出要求。
目標
- 設定環境。
- 設定範例。
- 執行範例。
必要條件
- Java 1.8 以上版本。
- Gradle 7.0 以上版本。
- Google Cloud 專案。
- 擁有已啟用 Google Keep 的 Google 帳戶。
設定環境
如要完成本快速入門導覽課程,請設定環境。
啟用 API
您必須先在 Google Cloud 專案中啟用這些 Google API,才能使用這些 API。 您可以在單一 Google Cloud 專案中啟用一或多個 API。在 Google Cloud 控制台中,啟用 Google Keep API。
建立服務帳戶
服務帳戶是由應用程式 而不是使用者您可以使用服務帳戶存取資料或執行動作 存取 Google Workspace 存取資料 或 Cloud Identity 使用者若需更多資訊,請參閲 瞭解服務帳戶。Google Cloud 控制台
- 在 Google Cloud 控制台中,前往「選單」圖示 > IAM 與管理員 >「服務帳戶」。
- 按一下「建立服務帳戶」。
- 填寫服務帳戶詳細資料,然後按一下「建立並繼續」。 注意:根據預設,Google 會建立不重複的服務帳戶 ID。
- 選用:為服務帳戶指派角色,授予 Google Cloud 專案資源的存取權。詳情請參閱「授予、變更及撤銷資源的存取權」。
- 按一下「繼續」。
- 選用:輸入可以透過這個服務帳戶管理及執行動作的使用者或群組。詳情請參閱「管理服務帳戶模擬功能」。
- 按一下 [完成]。記下服務帳戶的電子郵件地址。
gcloud CLI
- 建立服務帳戶:
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - 選用:為服務帳戶指派角色,授予 Google Cloud 專案資源的存取權。詳情請參閱「授予、變更及撤銷資源的存取權」。
建立服務帳戶的憑證
您必須以公開/私密金鑰組的形式取得憑證。這些 您的程式碼會使用憑證,授權服務帳戶執行- 在 Google Cloud 控制台中,前往「選單」圖示 > IAM 與管理員 >「服務帳戶」。
- 選取服務帳戶。
- 依序按一下「金鑰」>「新增金鑰」>「建立新的金鑰」。
- 選取「JSON」JSON,然後點按「建立」JSON。
系統會產生新的公開/私密金鑰組,並下載到您的 匯出為新檔案將下載的 JSON 檔案儲存為
credentials.json
並儲存到 工作目錄這個檔案是這組金鑰的唯一副本。如要瞭解如何儲存 安全密鑰,詳情請參閱 管理服務帳戶金鑰。 - 按一下「關閉」。
為服務帳戶設定全網域委派功能
如要代表 Google Workspace 機構中的使用者呼叫 API, 您必須在 透過超級管理員帳戶使用 Google Workspace 管理控制台。如要 資訊,請參閱 將全網域授權委派給服務帳戶。- 在 Google Cloud 控制台中,前往「選單」圖示 > IAM 與管理員 >「服務帳戶」。
- 選取服務帳戶。
- 按一下 [顯示進階設定]。
- 在「全網域委派」下方找出服務帳戶的「用戶端 ID」。按一下「複製」圖示 ,將用戶端 ID 值複製到剪貼簿。
如果您擁有相關 Google Workspace 帳戶的超級管理員存取權,請按一下 請查看 Google Workspace 管理控制台,然後以超級管理員使用者身分登入 帳戶,然後繼續完成這些步驟。
如果你沒有相關 Google Workspace 帳戶的超級管理員存取權, 請與該帳戶的超級管理員聯絡,並將服務帳戶的用戶端 ID 傳送給對方 和 OAuth 範圍清單,以便他們在管理控制台中完成下列步驟。
- 在 Google 管理控制台中,前往「選單」圖示 > 安全性 > 存取權與資料控管 >「API 控制項」。
- 按一下「管理全網域委派設定」。
- 按一下 [Add new] (新增)。
- 在「用戶端 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/
目錄中,建立名為 與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
-
第一次執行範例時,系統會提示您授予存取權:
- 如果尚未登入 Google 帳戶,請在系統提示時登入。如果 您已登入多個帳戶,請選取一個用於授權的帳戶。
- 然後點選 [Accept]。
Java 應用程式會執行並呼叫 Google Keep API。
授權資訊會儲存在檔案系統中,因此下次您執行範例時 這樣系統就不會提示您授權