Google API

使用 Google API

数据调用和后端chevron_right使用 Google API

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

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

用户数据 API 的例子包括 CalendarGmailYouTube 和 Firebase。

info提示

你只应该在 Flutter 项目中使用那些已经通过了 Google 身份验证的用户数据 API。

那些需要 服务账号 的 API, 不应该 直接使用到 Flutter 应用中。直接使用需要将服务证书作为应用程序的一部分,这是不安全的。我们推荐创建一个中间服务,来使用这些 API。

To add authentication to Firebase explicitly, check out the Add a user authentication flow to a Flutter app using FirebaseUI codelab and the Get Started with Firebase Authentication on Flutter docs.

概览

#

请遵循以下步骤使用 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 对用户进行验证。

dart

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

content_copy

2. 启用 API 服务

#

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

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

详情请看 入门指南

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

#

使用 google_sign_in package 对用户进行 Google 身份验证。为你需要的平台配置登录。

dart

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

content_copy

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

dart

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

content_copy

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

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

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

#

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

dart

import 'package:extension_google_sign_in_as_googleapis_auth/extension_google_sign_in_as_googleapis_auth.dart';

content_copy

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

dart

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

content_copy

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

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

#

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

dart

var youTubeApi = YouTubeApi(httpClient);

var favorites = await youTubeApi.playlistItems.list(
  ['snippet'],
  playlistId: 'LL', // Liked List
);
posted on 2024-12-10 09:33  AtlasLapetos  阅读(51)  评论(0)    收藏  举报