google_sign_in_dartio
一个 Flutter 包,用纯 Dart 实现 Google Sign In
该包与 google_sign_in 插件兼容
支持 Flutter 支持的所有平台,但主要用于桌面端。
主要用于桌面端。
入门
安装和初始化
- 依赖它
dependencies: google_sign_in: ^4.1.4 google_sign_in_dartio: ^0.0.6
- 运行
flutter pub get - 导入
import 'package:google_sign_in/google_sign_in.dart'; import 'package:google_sign_in_dartio/google_sign_in_dartio.dart';
- 注册包
import 'package:flutter/material.dart'; import 'package:google_sign_in/google_sign_in.dart'; import 'package:google_sign_in_dartio/google_sign_in_dartio.dart'; void main() { if (isDesktop) { GoogleSignInPlatform.register(clientId: <clientId>); } runApp(MyApp()); }
注意:在应用程序启动时调用任何
GoogleSignIn方法之前,您可能需要awaitregister方法的完成。
用法
您可以使用常规的 GoogleSignIn 方法。
final GoogleSignInAccount account = await GoogleSignIn().signIn();
为您的桌面应用程序获取客户端 ID
- 转到 Google Cloud Platform 控制台并选择您的 项目
- 转到
API 和服务->凭据 - 通过选择
创建凭据,然后选择OAuth 客户端 ID来为您的应用创建新凭据 - 选择
其他作为应用程序类型,为其命名(例如 macOS),然后点击创建
提供代码交换端点
用户的 accessToken 大约一小时后过期,之后您需要要求用户重新登录。如果您想
保持用户登录状态,您需要部署一个 oAuth 代码交换端点。一旦您有了端点,您就可以像这样注册
该包。
注意
如果您仅将其用于 FirebaseAuth,则不需要代码交换,因为令牌仅在您
使用 signInWithCredentials 方法时需要有效。
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:google_sign_in_dartio/google_sign_in_dartio.dart';
void main() {
if (isDesktop) {
GoogleSignInPlatform.register(
clientId: <clientId>,
exchangeEndpoint: <endpoint>,
);
}
runApp(MyApp());
}
注意
GoogleSignInTokenData 暴露了 serverAuthCode 字段,该字段应
包含授权请求中的交换代码。当使用此包时,此字段
将始终为 null,因为我们已经允许您提供一个代码交换端点,该端点会在可信环境中公开代码和代码
验证器,并鼓励不在客户端进行代码交换。
验证器,并鼓励不在客户端进行代码交换。
请参阅如何 部署代码交换端点 的说明。
请参阅如何 部署代码交换端点 的说明。