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

Flask项目使用Firebase Auth验证Token时出现解析段错误

问题排查与解决方案

可能的原因及对应修复方法

1. Authorization头未处理Bearer前缀

Firebase Auth的Token通常以Bearer <token>格式放在Authorization头中,如果代码直接读取整个头内容而未移除Bearer 前缀,会导致verify_id_token无法解析非标准格式的Token,抛出段解析错误。

修复代码,添加前缀处理逻辑:

def check_token(f):
    @wraps(f)
    def wrap(*args,**kwargs):
        token = request.headers.get('Authorization')
        if not token:
            return {'message': 'No token provided'},400
        # 移除Bearer前缀(如果存在)
        if token.startswith('Bearer '):
            token = token[7:].strip()  # 截取"Bearer "之后的内容
        try:
            user = auth.verify_id_token(token)
        except Exception as e:
            print(f'Error verifying token: {e}')
            return {'message':'Invalid token provided.'},400
        else:
            request.user = user
            return f(*args, **kwargs)
    return wrap

2. Token存在URL编码或转义问题

若前端传递Token时对其进行了URL编码(特殊字符被转义),后台拿到的是编码后的字符串,无法被正确解析。可添加解码步骤:

from urllib.parse import unquote

def check_token(f):
    @wraps(f)
    def wrap(*args,**kwargs):
        token = request.headers.get('Authorization')
        if not token:
            return {'message': 'No token provided'},400
        if token.startswith('Bearer '):
            token = token[7:].strip()
        # 解码URL编码的Token
        token = unquote(token)
        try:
            user = auth.verify_id_token(token)
        except Exception as e:
            print(f'Error verifying token: {e}')
            return {'message':'Invalid token provided.'},400
        else:
            request.user = user
            return f(*args, **kwargs)
    return wrap

3. Firebase Admin SDK缓存或版本问题

verify_id_token依赖缓存的公钥验证Token,若缓存的公钥损坏或过期,会导致解析失败。可尝试:

  • 升级firebase-admin到最新版本:
    pip install --upgrade firebase-admin
    
  • 重启Flask服务,清除SDK的公钥缓存

额外排查步骤

在验证前打印处理后的Token,确认其是否为标准JWT格式(三段式、用.分隔的字符串):

print(f"Processed token: {token}")

若打印内容不符合标准格式,说明前端Token的获取或传递逻辑存在问题,需排查前端代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:27:23