单Android/iOS应用集成多Firebase项目遇访问令牌受众无效错误求助
解决多Firebase项目集成中的"Invalid credentials: access token invalid audience"错误
你遇到的这个错误本质是Firebase服务收到的访问令牌受众不匹配,大多是因为多项目配置参数错误或初始化方式不对,可按以下步骤排查解决:
核对FirebaseOptions参数的准确性
每个项目的参数必须从对应项目的google-services.json(Android)或GoogleService-Info.plist(iOS)里精准提取:setApplicationId填的是文件里的mobilesdk_app_id(Android)或GOOGLE_APP_ID(iOS),不是App的包名/Bundle ID;setApiKey取对应项目的current_key(Android)或API_KEY(iOS),不能混用不同项目的Key;- 若使用数据库、存储等服务,必须补充对应项目的
setDatabaseURL和setStorageBucket,缺一不可。
正确初始化多FirebaseApp实例
不要覆盖默认的FirebaseApp,必须给第二个项目的实例指定唯一名称,后续访问对应服务时也要明确指定该实例:// 初始化默认项目(第一个Firebase项目) FirebaseApp.initializeApp(context); // 配置第二个项目的参数 FirebaseOptions secondaryOptions = new FirebaseOptions.Builder() .setProjectId("your-secondary-project-id") .setApplicationId("your-secondary-app-id") // 从对应项目的配置文件获取 .setApiKey("your-secondary-api-key") // 从对应项目的配置文件获取 .setDatabaseURL("https://your-secondary-project.firebaseio.com") .setStorageBucket("your-secondary-project.appspot.com") .build(); // 初始化第二个FirebaseApp,指定唯一标识 FirebaseApp secondaryApp = FirebaseApp.initializeApp(context, secondaryOptions, "SECONDARY_FIREBASE_APP"); // 使用第二个项目的Firestore服务示例 FirebaseFirestore secondaryFirestore = FirebaseFirestore.getInstance(secondaryApp);检查API Key的权限与受众设置
登录Google Cloud控制台,找到对应项目的API Key:- 验证平台限制:Android需匹配当前App的包名和SHA-1指纹,iOS需匹配Bundle ID;
- 确认API Key的受众(Audience)包含Firebase服务域名;
- 若配置无问题仍报错,尝试重新生成API Key替换原有值,旧Key可能存在配置残留问题。
验证服务调用的实例指向
使用Auth、Firestore等服务时,必须明确传入第二个FirebaseApp实例,否则会默认使用第一个项目的凭证,导致令牌受众不匹配。
内容的提问来源于stack exchange,提问作者Jay Parmar
相关产品推荐
相关产品推荐

