使用 Google API
Google APIs package 提供了許多你可以從 Dart 專案中使用的 Google 服務。
本頁面描述瞭如何透過 Google 身份驗證,使用這些 API 和終端使用者資料互動。
使用者資料 API 的例子包括 Calendar、 Gmail 和 YouTube。
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:
-
選擇所需的 API
-
啟用 API 服務
-
使用所需的作用域對使用者進行身份驗證
-
獲取身份驗證後的 HTTP 用戶端
-
建立並使用所需的 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
);
更多訊息
你可能還需要瞭解以下內容:
-
範例
extension_google_sign_in_as_googleapis_auth
是本頁面所述概念的一個可行的實現。