网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

如何实现Flutter中不依赖Firebase的独立Google登录功能?

GG网络技术分享 2026-04-16 07:25 2


前言——为什么要摆脱Firebase的枷锁?

太扎心了。 说实话,我在凌晨三点的咖啡摊里手抖写下了这段文字。Flutter已经把我们带进了跨平台的奇幻森林, 却总有那条看不见的藤蔓——Firebase把每个想要独立实现Google登录的灵魂拽回去。于是我决定——不!我不想再被束缚, 我要自己撸一套OAuth2让Google登录像一只自由的野猫,跳进我的App。

一、 先把Google Console玩儿成“开箱即用”

呵... 打开Google Cloud控制台,点“创建项目”,随便起个名字——比如“孤胆英雄”。接下来:

Flutter实现不依赖Firebase的多平台的Google登录
  • 左侧导航 → API与服务 → 启用API → 勾选People API
  • 凭据 → 创建凭据 → OAuth客户端ID → 选择对应平台
  • 把生成的Client IDClient Secret记下来别丢进垃圾桶。

挽救一下。 *噢, 对了Android那一步一定要记得跑一下keytool获取SHA‑1指纹,否则登录时会弹出“未授权的客户端”。*

二、 Flutter端依赖大杂烩

别慌,这里只需要一个插件——google_sign_in。在pubspec.yaml里加上:


dependencies:
  flutter:
    sdk: flutter
  google_sign_in: ^5.4.0   # 版本随意, 但别太老

然后运行flutter pub get如果卡住就去喝杯咖啡再回来,脑子呢?。

三、 代码实战:从零到登陆成功

你我共勉。 注意:下面的代码故意写得乱七八糟,只为让你体会到“手动配置”的刺激感。如果你不想被坑,请自行删减。


import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
final Map clientIds = {
  'android': 'YOUR_ANDROID_CLIENT_ID',
  'ios'    : 'YOUR_IOS_CLIENT_ID',
  'web'    : 'YOUR_WEB_CLIENT_ID',
};
Future signInWithGoogle async {
  try {
    // 随机挑选平台ID
    String platform = Theme.of.platform
        .toString.toLowerCase.contains ? 'ios' : 'android';
    final GoogleSignIn _googleSignIn = GoogleSignIn(
      clientId: clientIds,
      serverClientId: clientIds, // 必须提供Web端ID
      scopes: ,
    );
    // 开始登录
    final GoogleSignInAccount? account = await _googleSignIn.signIn;
    if  {
      debugPrint;
      return false;
    }
    // 获取Token
    final GoogleSignInAuntication auth = await account.auntication;
    debugPrint;
    debugPrint;
    // 把信息塞进全局变量, 或者直接发给后端
    userInfo = {
      'id'   : account.id,
      'name' : account.displayName ?? '',
      'email': account.email,
      'photo': account.photoUrl ?? '',
      'token': auth.idToken ?? '',
    };
    debugPrint;
    return true;
  } catch  {
    debugPrint;
    return false;
  }
}

*小贴士*: 如果你在iOS上看到“Missing URL scheme”, 说白了... 记得在Info.plist里加上类似下面的键值对:


CFBundleURLTypes

  
    CFBundleURLSchemes
    
      com.googleusercontent.apps.YOUR_IOS_CLIENT_ID
    
  

四、随机噪音:当代码遇到生活中的碎片时…

😢 昨天晚上梦见自己的App被黑客用。醒来第一件事就是检查一下依赖版本——别忘了升级Gradle,否则Android Studio会报错:“Gradle version too old”。💩

五、 产品对比表——顺手塞进去的噪声表格

产品名称是否支持无Firebase登录?集成难度额外功能亮点
Dartify Auth Kit是 ✅★★★☆☆A/B测试、动态权限管理。
Phoenix Sign-In SDK否 ❌★★★★★SaaS化仪表盘,一键部署。
Luna OAuth Wrapper是 ✅★★★★☆ Lottie动画集成,可自定义UI。
Nebula Login Pro 是 ✅ ★★☆☆☆ PWA友好、离线缓存。
Zeta Secure Auth
Ghost Login 是 ✅ ★★★★★ AI风格化登录页
*注:星级仅供参考, 实际体验请自行踩坑*

六、常见坑与解决方案

  • Panic! No SHA‑1 fingerprint found.        ) 把输出粘进去就好。
  • Error: Missing client ID for iOS.  
  • The redirect URI is not authorized.  
  • CORS报错 .  ) 其实吧线务必使用HTTPS。
  • 🔥#TODO:  把后端token校验写进去,否则平安性直线下降!😱
    • 七、 收尾感言:从焦虑到释然的过程🌀🌀🌀️️️️️️️️️️️️️⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡💥💥💥💥💥💥💥💥💥💥💥💥⛔⛔⛔⛔⛔⛔⛔⛔⛔⛔🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 🚁 🚁 🚁 🚁 🚁 🚁 🚁 🚁 🚁 🚁 💣 💣 💣 💣 🧨 🧨 🧨 🧨 🧨 🧨 🧨 🧨 😱😱😱😱😭😭😭😭😭😭😭😭🙈🙈🙈🙈🙈🙈🙈🙈🙉 🙉 🙉 🙉 🙉 🙉 🙉 🙊 🙊 🙊 🎭 🎭 🎭 🎭 🎭 🎭 🌪 🌪 🌪 🌪🌪🌪🌪🌪🌪🌪🌪🌦 🌦 🌦 🌦 🌦 🔥🔥🔥🔥🔥🔥🔥🔥🔥 🔐🔐🔐🔐🔐🔐🔐🔐 🔒🔒🔐🔒🔒🤖🤖🤖🤖🤖🤖🤖🤖 🤝 🤝 🤝 🤝 🤝 🤝 🤝 😎 😎 😎 😎 😎 😎 😎 ✨✨✨✨✨✨

      Aight,这篇乱七八糟却充满热血与泪水的指南就算完结啦。若还有哪块卡住请打开终端,大喊一声“我不怕”,然后#重启IDE# 再试一次!祝各位玩转Flutter无Firebase之路,一路斩妖除魔~ 🍻🍻🍻🥂🥂🥂✨✨✨👾👾👾🕹🕹🕹🎮🎮🎮📱📱📱🏆🏆🏆🚩🚩🚩.,薅羊毛。

      ©2026 Flutter狂热爱好者保留所有权利。未经允许,请勿复制或商业使用。本篇文章纯属个人经验分享,若因使用导致任何损失,本人概不负责。 )


提交需求或反馈

Demand feedback