使用 Google API

Google APIs package 提供了許多你可以從 Dart 專案中使用的 Google 服務。

本頁面描述瞭如何透過 Google 身份驗證,使用這些 API 和終端使用者資料互動。

使用者資料 API 的例子包括 CalendarGmailYouTube

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 對使用者進行驗證。

/// 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 package 對使用者進行 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 package 在 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
);

更多訊息

你可能還需要瞭解以下內容: