You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

上传Google Play时Google Sign In失败问题求助

Google Play上架后Google Sign In失败排查方案

问题现象

  • 仅从Google Play商店下载的应用出现Google登录失败,本地真机测试、其他渠道安装的应用登录功能均正常
  • 错误截图:仅上传Play商店时出现该问题,真机无此问题

使用代码

void signWithGoogle(
    BuildContext context,
    WidgetRef? ref,
  ) async {
    try {
      final GoogleSignIn googleSignIn = GoogleSignIn();

      final GoogleSignInAccount? googleSignInAccount =
          await googleSignIn.signIn();

      String? deviceToken = await FirebaseMessaging.instance.getToken();

      UserModel.User user = UserModel.User(
        id: '',
        uniqueId: '',
        displayName: googleSignInAccount!.displayName!.toString(),
        email: googleSignInAccount.email,
        mobile: 0,
        profilePicture: googleSignInAccount.photoUrl != ''
            ? googleSignInAccount.photoUrl
            : profilePic,
        followers: [],
        following: [],
        token: '',
        deviceToken: deviceToken!,
        createdAt: '',
      );

      http.Response res = await http.post(
        Uri.parse('$url/api/signup'),
        body: user.toJson(),
        headers: <String, String>{
          "Content-Type": "application/json; charset=UTF-8",
        },
      );

      if (context.mounted) {
        httpErrorHanding(
          res: res,
          context: context,
          onSuccess: () async {
            SharedPreferences prefs = await SharedPreferences.getInstance();
            await prefs.setString(
                'x-access-token', jsonDecode(res.body)['token']);
            ref!.read(userProvider.notifier).updateUser(res.body);
            Navigator.of(context).push(
              MaterialPageRoute(
                builder: (context) => BottomBar(data: 0),
              ),
            );
          },
        );
      }
    } catch (e) {
      showSnackbar(context, e.toString());
    }
  }

已完成操作

  • 已将Debug和Release模式的SHA-1/SHA-256密钥添加至Firebase控制台
  • 已将google-services.json放置在Android项目的app目录下

排查与解决方案

1. 补充Google Play应用签名的SHA密钥到Firebase

当应用上传至Google Play后,若开启了Google Play应用签名(默认开启),Google会使用官方签名密钥重新签名应用,本地Release版的SHA密钥会失效:

  • 登录Google Play控制台,进入目标应用,左侧菜单选择应用签名
  • 复制应用签名证书下的SHA-1和SHA-256值
  • 登录Firebase控制台,进入对应项目的设置 > 项目设置 > 应用
  • 在Android应用的SHA证书指纹区域添加复制的SHA值,保存后重新下载最新的google-services.json替换到项目,重新打包上传Play

2. 检查OAuth 2.0客户端ID配置

  • 进入Firebase关联的Google Cloud控制台,打开API和服务 > 凭据
  • 确认存在对应Play签名的Android类型OAuth客户端ID,若没有则手动创建:填写包名,粘贴Play提供的SHA-1值完成创建
  • 若使用了Web登录流程,同步检查Web客户端ID的配置有效性

3. 代码空值处理优化

代码中存在强制解包操作,可能在登录异常时引发崩溃,建议补充空值判断:

// 处理登录取消情况
if (googleSignInAccount == null) {
  showSnackbar(context, "登录已取消");
  return;
}
// 安全获取displayName
String displayName = googleSignInAccount.displayName ?? "未知用户";
// 处理设备令牌为空的情况
if (deviceToken == null) {
  showSnackbar(context, "设备令牌获取失败");
  return;
}

4. 查看错误日志定位问题

  • 登录Google Play控制台,进入质量 > Android vitals > 崩溃与ANRs,查看登录相关的崩溃日志
  • 在Firebase控制台的Crashlytics或Analytics > 事件中,查看登录失败的具体错误信息,辅助定位问题

内容的提问来源于stack exchange,提问作者Luffy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:24:55