使用 Google API

Google APIs package 提供了许多你可以从 Dart 项目中使用的 Google 服务。

本页面描述了如何通过 Google 身份验证,使用这些 API 和终端用户数据交互。

用户数据 API 的例子包括 CalendarGmailYouTube

概览

请遵循以下步骤使用 Google API。

  1. 选择所需的 API

  2. 启用 API 服务

  3. 使用所需的作用域对用户进行身份验证

  4. 获取身份验证后的 HTTP 客户端

  5. 创建并使用所需的 API 类

1. 选择所需的 API

文档 package:googleapis 采用 name.version 的形式,列举了每一个可以单独作为 Dart 库的 API。一起看看 youtube.v3 这个例子。

每一个库都可以提供多种类型,但是一定会有一个以 Api 结尾的 类。在 YouTube 中,根类就是 YouTubeApi

Api 类不仅是你需要初始化的类——详见步骤 3 ——它还暴露了使用该 API 所需权限的作用域。请看 YouTubeApi 类中 常量 这一节,你会看到可用的作用域有哪些。为了获取终端用户的 YouTube 数据的读取(并非写入)权限,用户验证时使用 youtubeReadonlyScope

/// Provides the `YouTubeApi` class.
import 'package:googleapis/youtube/v3.dart';

2. 启用 API 服务

使用 Google API,你必须有一个 Google 账户和一个 Google 项目。你还需要启用所需的 API 服务。

在本示例中,你将需要启用 YouTube Data API v3 服务。

详情请看 入门指南

3. 使用所需的作用域对用户进行身份验证

使用 google_sign_in 包对用户进行 Google 身份验证。你必须为每一种想要支持的平台配置登录。

/// Provides the `GoogleSignIn` class
import 'package:google_sign_in/google_sign_in.dart';

当你初始化 GoogleSignIn 类时,你需要提供前面的小节中提到的所需的作用域。

final _googleSignIn = GoogleSignIn(
  scopes: <String>[YouTubeApi.youtubeReadonlyScope],
);

按照 package:google_sign_in 中的介绍来进行用户验证。

一旦验证完毕,你必须获取一个验证后的 HTTP 客户端。

4. 获取身份验证后的 HTTP 客户端

extension_google_sign_in_as_googleapis_auth 包在 GoogleSignIn 中提供了一个 扩展方法authenticatedClient

import 'package:extension_google_sign_in_as_googleapis_auth/extension_google_sign_in_as_googleapis_auth.dart';

你可以监听 onCurrentUserChanged。当事件值不是 null 时,你可以创建一个身份验证后的客户端。

var httpClient = (await _googleSignIn.authenticatedClient())!;

Client 实例包含了调用 Google API 类时所需的凭证。

5. 创建并使用所需的 API 类

使用 API 来创建所需的 API 类型和调用方法,例如:

var youTubeApi = YouTubeApi(httpClient);

var favorites = await youTubeApi.playlistItems.list(
  ['snippet'],
  playlistId: 'LL', // Liked List
);

更多信息