Skip to main content

Google APIs

Google APIs 包 提供了数十个 Google 服务,您可以在 Dart 项目中使用这些服务。

本页介绍如何使用与最终用户数据交互的 API,方法是使用 Google 身份验证。

用户数据 API 的示例包括 日历GmailYouTube 和 Firebase。

要显式地向 Firebase 添加身份验证,请查看 使用 FirebaseUI 向 Flutter 应用添加用户身份验证流程 代码实验室和 Flutter 上的 Firebase 身份验证入门 文档。

概述

#

要使用 Google APIs,请按照以下步骤操作:

  1. 选择所需的 API
  2. 启用 API
  3. 使用所需的范围对用户进行身份验证
  4. 获取经过身份验证的 HTTP 客户端
  5. 创建并使用所需的 API 类

1. 选择所需的 API

#

package:googleapis 的文档将每个 API 列为单独的 Dart 库——采用 name_version 格式。 查看youtube_v3 作为示例。

每个库可能提供许多类型,但只有一个以 Api 结尾的 类。对于 YouTube,它是YouTubeApi

Api 类不仅是您需要实例化的类(请参阅步骤 3),而且还公开了表示使用 API 所需权限的范围。例如,YouTubeApi 类的常量部分 列出了可用的范围。要请求访问(但不能写入)最终用户的 YouTube 数据,请使用youtubeReadonlyScope 对用户进行身份验证。

dart
/// 提供 `YouTubeApi` 类。
import 'package:googleapis/youtube/v3.dart';

2. 启用 API

#

要使用 Google APIs,您必须拥有 Google 帐号和 Google 项目。您还需要启用所需的 API。

此示例启用了YouTube 数据 API v3。有关详细信息,请参阅入门说明

3. 使用所需的范围对用户进行身份验证

#

使用google_sign_in 包使用用户的 Google 身份对用户进行身份验证。为要支持的每个平台配置登录。

dart
/// 提供 `GoogleSignIn`
import 'package:google_sign_in/google_sign_in.dart';

实例化GoogleSignIn 类时,请提供上一节中讨论的所需范围。

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

按照package:google_sign_in 提供的说明允许用户进行身份验证。

身份验证后,您必须获取经过身份验证的 HTTP 客户端。

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

#

extension_google_sign_in_as_googleapis_auth 包在 GoogleSignIn 上提供了一个扩展方法,称为authenticatedClient

dart
import 'package:extension_google_sign_in_as_googleapis_auth/extension_google_sign_in_as_googleapis_auth.dart';

onCurrentUserChanged 添加侦听器,当事件值不为 null 时,您可以创建经过身份验证的客户端。

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

Client 实例在调用 Google API 类时包含必要的凭据。

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

#

使用 API 创建所需的 API 类型并调用方法。例如:

dart
var youTubeApi = YouTubeApi(httpClient);

var favorites = await youTubeApi.playlistItems.list(
  ['snippet'],
  playlistId: 'LL', // 收藏列表
);

更多信息

#

您可能需要查看以下内容: