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

Android应用Google登录的Firebase Token验证失败,Web端正常

Android端Google登录Token验证失败排查方案

当验证Android应用通过Google登录获取的Token时,返回以下错误:

{"message":"Unauthorized - Token is invalide: The value 'eyJhbGciOiJSUzI...' is not a verified ID token:\n- - The token is expired\n- - The token was not issued by the given issuers\n- - The token is not allowed to be used by this audience\n- - Token signature mismatch\n"}

但Web端使用邮箱/密码授权时验证正常,后端验证代码如下:

$idTokenString = $request->input('token');

try { // 验证Google提供的Firebase凭证Token
    $verifiedIdToken = $auth->verifyIdToken($idTokenString);
    dd($verifiedIdToken);
} catch (\InvalidArgumentException $e) { // Token格式错误时
    return response()->json([
        'message' => 'Unauthorized - 无法解析Token: ' . $e->getMessage()
    ], 401);
} catch (Exception $e) { // Token无效(过期等)时
    return response()->json([
        'message' => 'Unauthorized - Token无效: ' . $e->getMessage()
    ], 401);
}

---

### 排查与解决步骤
- **确认Token类型正确**
  Android端Google登录后,必须传递**ID Token**而非Access Token。调用Google登录API的`getIdToken()`方法获取用于后端验证的ID Token,别误传了用于API调用的Access Token。

- **校验Token发行方(Issuer)**
  解码Token查看`iss`字段,必须是`https://accounts.google.com`或`accounts.google.com`。若不符,说明Token不是来自你的项目关联的Google登录服务,检查Android端是否正确配置了Firebase项目的Google登录。

- **匹配受众(Audience)信息**
  Token的`aud`字段需与你的Firebase项目Web API密钥,或对应Android应用的OAuth 2.0客户端ID一致。确认后端Firebase初始化配置正确,Android端Google登录使用的是该项目下的Android客户端ID。

- **避免Token过期**
  Google ID Token有效期仅1小时,Android端获取后需立即传给后端验证,禁止使用缓存的旧Token。若用户登录后长时间未操作,需重新获取新Token。

- **修复签名不匹配问题**
  签名不匹配多因Token被篡改,或后端Firebase SDK未正确获取Google公钥验证签名。确保后端使用最新版Firebase SDK,且初始化时使用了正确的项目服务账号密钥,SDK会自动处理签名验证。

- **检查Android端配置**
  确认Firebase控制台中已正确配置Android应用的包名、SHA-1指纹,且Google登录使用的OAuth客户端ID属于该Android应用,而非Web端客户端ID。

内容的提问来源于stack exchange,提问作者Sakezzz
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:30:34