透過 Java 輕鬆存取 Google API

Java 適用的 Google API 用戶端程式庫提供所有 Google API 通用的功能,例如 HTTP 傳輸、錯誤處理、驗證、JSON 剖析、媒體下載/上傳以及批次處理。這個程式庫具有強大的 OAuth 2.0 程式庫,內含一致的介面、支援各種資料架構的輕量高效率 XML 和 JSON 資料模型,以及通訊協定緩衝區的支援。

如要使用 Google 的 Java 用戶端程式庫,呼叫 Google API,您必須針對存取的 Google API 產生 Java 程式庫。這些產生的程式庫包含核心 google-api-java-client 程式庫,以及根網址等 API 專屬資訊。這些類別也會包含在 API 中代表實體的類別,用於在 JSON 物件和 Java 物件之間進行轉換。
在類別或方法層級中,標示 @Beta 的功能可能會有變動。在任何主要版本中可能經過修改或移除。如果程式碼本身是程式庫,請不要使用 Beta 版功能 (也就是說,如果您的程式碼是用在受控管的 CLASSPATH 使用者),
非 Beta 版功能會在首次淘汰的十八月後移除。請務必在這段時間之前修正用量。如未排除,任何類型的中斷情形都可能會發生中斷,而且不保證一定會發生編譯錯誤。

Java 適用的 Google API 用戶端程式庫重點

您可以搭配 Java 適用的 Google API 用戶端程式庫,使用 Google 服務專用產生程式庫呼叫 Google API。(如要尋找為 Google API 產生的用戶端程式庫,請參閱支援的 Google API 清單)。以下範例說明如何使用適用於 Java 的 Calendar API 用戶端程式庫呼叫 Google Calendar API:
 // Show events on user's calendar.
 View.header("Show Calendars");
 CalendarList feed = client.calendarList().list().execute();
 View.display(feed);

這個程式庫可讓你更輕鬆地批次處理和媒體上傳/下載

這個程式庫提供批次處理媒體上傳媒體下載的輔助類別。
該程式庫包含強大的驗證程式庫,可減少處理 OAuth 2.0 所需的程式碼量。有時只要幾行就夠了。例如:
 /** Authorizes the installed application to access user's protected data. */
 private static Credential authorize() throws Exception {
   // load client secrets
   GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
       new InputStreamReader(CalendarSample.class.getResourceAsStream("/client_secrets.json")));
   // set up authorization code flow
   GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
       httpTransport, JSON_FACTORY, clientSecrets,
       Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory)
      .build();
   // authorize
   return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
}
App Engine 專屬輔助程式可讓您快速進行已驗證的 API 呼叫,而且您不必擔心更換代碼的程式碼。

例如:
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
   AppIdentityCredential credential =
       new AppIdentityCredential(Arrays.asList(UrlshortenerScopes.URLSHORTENER));
   Urlshortener shortener =
       new Urlshortener.Builder(new UrlFetchTransport(), new JacksonFactory(), credential)
       .build();
   UrlHistory history = shortener.URL().list().execute();
   ...
 }
Java 專用 Google 用戶端程式庫的 Android 專屬輔助類別可與 Android AccountManager 完美整合。例如:
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   // Google Accounts
   credential =
       GoogleAccountCredential.usingOAuth2(this, Collections.singleton(TasksScopes.TASKS));
   SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
   credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
   // Tasks client
   service =
       new com.google.api.services.tasks.Tasks.Builder(httpTransport, jsonFactory, credential)
           .setApplicationName("Google-TasksAndroidSample/1.0").build();
 }
如果您使用的不是產生的程式庫,可以直接從下載頁面下載適用於 Java 的 Google API 用戶端程式庫二進位檔,或者使用 Maven 或 Gradle。如要使用 Maven,請在 pom.xml 檔案中新增以下幾行程式碼:

 <project>
  <dependencies>
   <dependency>
     <groupId>com.google.api-client</groupId>
     <artifactId>google-api-client</artifactId>
     <version>1.32.1</version>
   </dependency>
  </dependencies>
 </project>
如要使用 Gradle,請在 build.gradle 檔案中新增以下幾行程式碼:
 repositories {
      mavenCentral()
  }
  dependencies {
      compile 'com.google.api-client:google-api-client:1.32.1'
  }
敬上 進一步瞭解如何安裝及設定 Google API 適用於 Java 的用戶端程式庫,請參閱 下載 以及設定操作說明
Java 的 Google API 用戶端程式庫支援以下 Java 環境:
  • Java 7 以上版本、標準 (SE) 和企業版 (EE)。
  • Google App Engine
  • Android 4.4 以上版本 - 如果您需要的 Google 服務有可用的 Google Play 服務程式庫,請使用該程式庫取代這個程式庫。Google Play 媒體庫可為你提供最佳效能和體驗。
不支援:Google Web Toolkit (GWT)、Java Mobile (ME) 和 Java 6 (或更早的版本)。

依附元件

Java 的 Google API 用戶端程式庫 (google-api-java-client) 是以兩個常見程式庫為基礎建構而成,這些程式庫同樣是由 Google 建置,可以用來與網路上的任何 HTTP 服務搭配使用: