当前位置: 首页 > news >正文

Google 登录问题排查指南

📋 问题描述

症状:Flutter 应用通过 Google Play 下载安装后,点击 Google 登录按钮报错:

GoogleSignInException(code GoogleSignInExceptionCode.canceled, [16] Account reauth failed., null)

环境

  • Flutter + google_sign_in 插件
  • 应用以 AAB 格式上传到 Google Play
  • 用户从 Google Play 下载安装

🔍 排查过程

第 1 步:添加调试日志

由于 Release 模式下print()不输出日志,创建了一个日志收集器在应用内显示错误详情:

import 'dart:developer' as developer; class GoogleAuthLogger { static final List<String> _logs = []; static void log(String message) { final timestamp = DateTime.now().toString().substring(11, 19); final entry = '[$timestamp] $message'; _logs.add(entry); developer.log(message, name: 'GoogleAuth'); } static String getLogs() => _logs.join('\n'); static void clear() => _logs.clear(); }

在 UI 中添加"查看调试日志"按钮,登录失败时显示详细日志。

第 2 步:定位问题

通过日志发现错误发生在Google 原生认证阶段(还没到 Supabase):

[22:46:47] 📱 触发 Google 登录界面 [22:46:49] ❌ Google 认证失败: GoogleSignInException(code GoogleSignInExceptionCode.canceled, [16] Account reauth failed., null)

错误码[16] Account reauth failed表示SHA-1 指纹不匹配

第 3 步:检查 SHA-1 配置

检查本地 Release keystore 的 SHA-1:

keytool -list -v -keystore ~/linguadiary-release-key.jks -alias linguadiary-key-alias

输出:

SHA1: 13:0X:62:E7:BE:32:F4:E4:C1:0C:D6:04:BA:15:F7:BD:7D:49:13:C9

Google Cloud Console 中的 Android OAuth Client 已配置这个 SHA-1,但还是失败...

第 4 步:发现根本原因

应用是以AAB 格式上传到 Google Play 的,Google Play 会用自己的密钥重新签名 APK

这意味着用户下载的 APK 签名与本地 keystore 不同。

🔑 关键知识:两个证书的区别

证书SHA-1谁持有用途
Upload Key(上传密钥)13:0F:61:E7:...开发者本地上传 AAB 到 Google Play 时验证身份
App Signing Key(应用签名密钥)DC:B4:A6:04:...Google 服务器给用户下载的 APK 签名

流程图

开发者电脑 Google Play 用户手机 │ │ │ │ 1. 用 Upload key 签名 │ │ │ AAB 上传 │ │ ├──────────────────────────►│ │ │ │ 2. Google 用 │ │ │ App signing key │ │ │ 重新签名 APK │ │ ├──────────────────────────►│ │ │ │ │ │ 用户安装的 APK │ │ │ 签名 = App signing key│

✅ 解决方案

1. 获取 App Signing Key 的 SHA-1

  1. 打开 Google Play Console
  2. 选择应用 →Test and releaseApp integrity
  3. 点击Play app signingSettings
  4. 找到App signing key certificate的 SHA-1

2. 更新 Google Cloud Console

  1. 打开 Google Cloud Console - Credentials
  2. 编辑 Android Release OAuth Client
  3. 将 SHA-1 改为 App signing key 的 SHA-1
  4. 保存

3. 清除 Google Play 服务缓存(测试设备)

由于之前用错误的 SHA-1 尝试过登录,手机缓存了旧配置:

  1. 手机设置应用Google Play 服务
  2. 存储清除缓存
  3. 重新测试

⚠️ 注意:普通用户不需要这一步,只有测试设备因缓存旧数据才需要清除。

📌 经验总结

  1. AAB 上传 = Google 重新签名:必须使用 App signing key 的 SHA-1
  2. APK 直接安装:使用 Upload key 的 SHA-1
  3. Release 模式调试:使用dart:developerlog()函数
  4. 缓存问题:测试时如遇问题,清除 Google Play 服务缓存

🔧 调试检查清单

  • [ ] 确认 OAuth 同意屏幕已配置并发布(或测试账号已添加)
  • [ ] 确认 Android OAuth Client 的包名正确
  • [ ] 确认使用正确的 SHA-1(Google Play 下载用 App signing key)
  • [ ] 确认 Web Client ID 用于serverClientId参数
  • [ ] 测试设备清除 Google Play 服务缓存
http://www.cnnetsun.cn/news/8293.html

相关文章:

  • RouterOS 7.19 x86深度技术解析:网络协议优化与系统稳定性关键技术
  • 你还在盲调量子电路?这3个VSCode插件让你秒变QML调试高手
  • RAG知识库——怎么构建一个高质量的知识库
  • 以向善价值观构建数字信任,数美2025 AI风控大会重磅发布“AI风控新范式”
  • 终极嵌入式按键解决方案:MultiButton状态机库实战指南
  • ZyPlayer终极配置指南:3步打造专属影院级体验
  • gmhelper:5分钟快速掌握国密算法SM2/SM3/SM4的完整应用方案
  • 19、高级Shell编程与正则表达式过滤器
  • PHP兼容性检查工具完整指南
  • 基于元胞自动机交通模型的三车道Matlab代码:模拟车辆多车道行驶及可视化分析系统
  • 豆包手机二手价被炒到3.6万元;被曝开发“芯片定位”技术,英伟达:这不是后门;千问月活突破3000万 | 极客头条
  • Wan2.2-T2V-A14B适合哪些行业?五大垂直领域推荐
  • 基于西门子S7-200PLC的自动灌溉系统组态王组态 带解释的梯形图程序,接线图原理图图纸,io分配
  • 机器学习驱动的智能化电池管理技术与应用
  • 如何优化MinerU项目的PaddleOCR模型部署效率
  • SVG.js动画开发终极指南:从入门到精通
  • Python 对象序列化与存储库pickle详细介绍
  • 圣诞快乐!来自代码世界的祝福
  • 一致性的威力:AI如何在B/G端释放数据治理的真正生产力
  • 知行之桥三种接口详解:Webhook、Flow API 与 Admin API
  • CPFEM晶塑动态展示:VUMAT子程序高效率与多维度模型应用测试
  • 毕业设计实战:基于SpringBoot+MySQL的旅游网站设计与实现,从需求到测试全流程拆解,新手也能轻松通关!
  • 如何在没有电脑的情况下备份 iPhone
  • Python HTTPX性能优化实战:10个技巧解决90%的连接问题
  • 空调加热器MPC模型预测控制程序与修正Kalman滤波:附简洁文献与附图与运行指南
  • Spring Boot日志文件未生成问题排查
  • 2025CRM选型手册:主流CRM品牌客户 - 销售 - 团队管理能力 场景化对比
  • AI口碑决胜未来:2025年智能洞察与AI市场舆情分析平台深度对决
  • 5分钟掌握Nginx LDAP认证系统部署技巧
  • 基于否定选择算法的异常检测技术详解