Products
GG网络技术分享 2026-04-16 07:25 2
太扎心了。 说实话,我在凌晨三点的咖啡摊里手抖写下了这段文字。Flutter已经把我们带进了跨平台的奇幻森林, 却总有那条看不见的藤蔓——Firebase把每个想要独立实现Google登录的灵魂拽回去。于是我决定——不!我不想再被束缚, 我要自己撸一套OAuth2让Google登录像一只自由的野猫,跳进我的App。
呵... 打开Google Cloud控制台,点“创建项目”,随便起个名字——比如“孤胆英雄”。接下来:

挽救一下。 *噢, 对了Android那一步一定要记得跑一下keytool获取SHA‑1指纹,否则登录时会弹出“未授权的客户端”。*
别慌,这里只需要一个插件——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风格化登录页 |
| *注:星级仅供参考, 实际体验请自行踩坑* | |||
Aight,这篇乱七八糟却充满热血与泪水的指南就算完结啦。若还有哪块卡住请打开终端,大喊一声“我不怕”,然后#重启IDE# 再试一次!祝各位玩转Flutter无Firebase之路,一路斩妖除魔~ 🍻🍻🍻🥂🥂🥂✨✨✨👾👾👾🕹🕹🕹🎮🎮🎮📱📱📱🏆🏆🏆🚩🚩🚩.,薅羊毛。
©2026 Flutter狂热爱好者保留所有权利。未经允许,请勿复制或商业使用。本篇文章纯属个人经验分享,若因使用导致任何损失,本人概不负责。 )Demand feedback