通过 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 还包含在 API 上下文中表示实体且有助于在 JSON 对象和 Java 对象之间进行转换的类。
在类或方法级别标有 @Beta 版的功能随时可能会更改。它们可能会在任何主要版本中被修改或移除。如果您的代码本身是一个库(即,在无法控制的用户的类路径上使用代码),请勿使用 Beta 版功能。
已弃用的非 Beta 版功能将在首次弃用后 18 个月移除。您必须在此之前修正自己的使用情况。否则,可能会导致任何类型的破坏,且无法保证出现编译错误。

Java 版 Google API 客户端库的亮点

您可以使用 Google 服务专用的生成库和适用于 Java 的 Google API 客户端库来调用 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'
  }
如需详细了解如何安装和设置 Java 版 Google API 客户端库,请参阅下载和设置说明
适用于 Java 的 Google API 客户端库支持以下 Java 环境:
  • Java 7 或更高版本、标准 (SE) 和企业 (EE)。
  • Google App Engine
  • Android 4.4 或更高版本,但如果 Google Play 服务库可用于您需要的 Google 服务,请使用该库而不是库。Google Play 内容库将为您提供最佳性能和体验。
不支持:Google Web Toolkit (GWT)、Java Mobile (ME) 和 Java 6(或更早版本)。

依赖项

适用于 Java 的 Google API 客户端库 (google-api-java-client) 以两个同样由 Google 构建的常用库为基础,可与网络上的任何 HTTP 服务搭配使用: