Expo Secrets问题:EXPO_BUILD_FIREBASE_API_KEY在TestFlight中无效
Expo Build环境下Firebase API密钥无效问题解决
先搞清楚Expo环境变量的区别:
- 带
EXPO_PUBLIC_前缀的变量是给客户端用的,不管本地开发还是打包后的App都能读到,所以你本地用这个前缀能正常工作是对的。 - 而
EXPO_BUILD_前缀的变量只有在构建过程中能访问,构建完成后不会被打包进客户端代码里。这就是为什么你用process.env.EXPO_BUILD_FIREBASE_API_KEY在TestFlight里无效——App运行时根本拿不到这个变量。
- 带
关于密钥里的连字符:
Firebase API密钥带连字符是完全正常的,不需要加转义符或者引号。你硬编码能正常用,就说明密钥本身没问题,别在这浪费时间。正确的解决办法:
如果要在App运行时用这个密钥,直接把变量名改成EXPO_PUBLIC_FIREBASE_API_KEY,然后在Expo账户里更新对应的环境变量配置。构建的时候Expo会把这个变量注入到客户端代码里,TestFlight版本就能正常读取了。补充一句:虽然Firebase API密钥可以公开(官方有安全机制限制它的使用场景),但如果你的项目有特殊保密需求,最好通过后端代理Firebase请求,别直接在客户端暴露密钥。
内容的提问来源于stack exchange,提问作者tomwaitforitmy
相关产品推荐
相关产品推荐

