google_sign_in_dartio

一个 Flutter 包,用纯 Dart 实现 Google Sign In
该包与 google_sign_in 插件兼容
支持 Flutter 支持的所有平台,但主要用于桌面端。
主要用于桌面端。

入门

安装和初始化

  1. 依赖它

    dependencies:
      google_sign_in: ^4.1.4
      google_sign_in_dartio: ^0.0.6
  2. 运行 flutter pub get
  3. 导入

    import 'package:google_sign_in/google_sign_in.dart';
    import 'package:google_sign_in_dartio/google_sign_in_dartio.dart';
  4. 注册包

    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 方法之前,您可能需要 await register 方法的完成。

用法

您可以使用常规的 GoogleSignIn 方法。

final GoogleSignInAccount account = await GoogleSignIn().signIn();

为您的桌面应用程序获取客户端 ID

  1. 转到 Google Cloud Platform 控制台并选择您的 项目
  2. 转到 API 和服务 -> 凭据
  3. 通过选择 创建凭据,然后选择 OAuth 客户端 ID 来为您的应用创建新凭据
  4. 选择 其他 作为 应用程序类型,为其命名(例如 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,因为我们已经允许您提供一个代码交换端点,该端点会在可信环境中公开代码和代码
验证器,并鼓励不在客户端进行代码交换。
验证器,并鼓励不在客户端进行代码交换。
请参阅如何 部署代码交换端点 的说明。

请参阅如何 部署代码交换端点 的说明。

GitHub

https://github.com/long1eu/google_sign_in_dart