flutter集成Google第三方登录

前言

历时半天时间,踏过无数个坑,终于吧google登录搞定了,有些坑是官方文档给挖的,但是大多数坑还是网上的其他同仁给挖的,在这我就不多说了,也可能是版本过于久远,在他们那个年代可行的方法到现在已经不可行了,所以在这里也加一些免责声明:本文章中的集成方式可能在未来某个时间段就失效了,所以,请大家最好还是以官方文档为准。

1.添加相关依赖:

  firebase_auth: version
  google_sign_in: version

插件地址:
https://pub.dev/packages/firebase_auth

https://pub.dev/packages/google_sign_in

2.注册Google账号

相关地址:
https://console.firebase.google.com

在firebase中创建自己的应用:
在这里插入图片描述

按照步骤填写就行了,最终进入项目管理页面:
在这里插入图片描述

点击有Flutter标识的图标:

在这里插入图片描述
进入如下页面:

在这里插入图片描述

按照上面的步骤完成项目的firebase插件的安装。

这里最主要的是第三步的初始化Firebase

import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

// ...

await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
);

如果加入这一步在运行的时候报错,可以替换成一下代码:

  if (Firebase.apps.isEmpty) {
    await Firebase.initializeApp(
      name: 'app name',
      options: DefaultFirebaseOptions.currentPlatform,
    ).then((value) {
      logger.i('Firebase Initialized:${value.options}');
    });
  }

整体代码在main.dart 中设置

import 'package:bty_foundation/bty_foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:smart_lock_flutter/app.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // await SpUtil.getInstance();
  if (Firebase.apps.isEmpty) {
    await Firebase.initializeApp(
      name: 'app name',
      options: DefaultFirebaseOptions.currentPlatform,
    ).then((value) {
      logger.i('Firebase Initialized:${value.options}');
    });
  }
  SmartChannel.currentChannel=APPChannel.prod;
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
      .then((_) {
    // Get.put(GlobalLogic());
    runApp(const BytApp());
  });
}

创建完应用后要将应用的包名以及Android签名信息加入到应用中,

在这里插入图片描述
在这里插入图片描述

设置好Firebase之后就是Google登录的部分了,google登录的代码如下:

  void signInWithGoogle() async {
    if (state.check == false) {
      showToast(SmartIntlLocalizations.current.lock_name1059);
      return;
    }
    try {
      GoogleSignIn _googleSignIn = GoogleSignIn(
        // Optional clientId254245928859-qt24ume2175h1183ruac8edned2u29kr.apps.googleusercontent.com
        // clientId: '479882132969-9i9aqik3jfjd7qhci1nqf0bm2g71rm1u.apps.googleusercontent.com',
        scopes: <String>[
          'email',
          'https://www.googleapis.com/auth/contacts.readonly',
        ],
      );
      logger.d("开始google登录");
      // Trigger the authentication flow
      final googleUser = await _googleSignIn.signIn();
      logger.d("googleUser:${googleUser.toString()}");
      // Obtain the auth details from the request
      final googleAuth = await googleUser?.authentication;
      logger.d("googleAuth:${googleAuth.toString()}");
      if (googleAuth != null) {
        // Create a new credential
        logger.d("googleAuth: is not null");
        final credential = GoogleAuthProvider.credential(
          accessToken: googleAuth.accessToken,
          idToken: googleAuth.idToken,
        );
        print("获取google信息成功${googleUser.toString()}");
 		// to do 处理获取google用户信息后的登录操作       

    } catch (e) {
      logger.d("Auth error !:${e.toString()}");
    }
  }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倚栏静望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值