Expo安卓开发构建中自定义Scheme URI不被允许问题求助
解决方案:Custom scheme URIs are not allowed for "WEB" client type
问题根源
你当前使用的是Firebase的Web类型客户端ID,但EAS构建的安卓包是原生应用,Web客户端ID不支持自定义scheme跳转(Firebase的权限限制),而Expo开发模式依赖WebView/浏览器环境,所以Web ID能正常工作。
具体修复步骤
生成Firebase安卓专属客户端ID
- 打开Firebase控制台→对应项目→设置→应用→点击「添加应用」选择安卓
- 填写与app.json/expo.json中
android.package完全一致的包名(比如com.yourteam.yourapp) - 按提示下载
google-services.json,放到项目根目录 - 从
google-services.json中提取client[0].client_info.android_client_id的值,这就是安卓客户端ID - 替换eas.json中
development.env.CLIENT_ID为这个安卓ID,或者新增ANDROID_CLIENT_ID环境变量
配置Expo项目的原生适配
- 安装
expo-google-services插件:npx expo install expo-google-services - 在app.json/expo.json的
plugins数组中添加:["expo-google-services"] - 确保
expo.scheme已正确设置(比如yourapp),这个scheme要和Firebase回调配置一致
- 安装
适配expo-auth-session的客户端ID逻辑
在登录代码中根据平台切换客户端ID,避免开发/构建环境混用:import { Platform } from 'react-native'; import { useAuthRequest } from 'expo-auth-session'; const clientId = Platform.OS === 'android' ? process.env.ANDROID_CLIENT_ID : process.env.WEB_CLIENT_ID; // 开发模式或iOS用对应ID const [request, response, promptAsync] = useAuthRequest( { clientId, redirectUri: `${process.env.EXPO_SCHEME}://oauthredirect`, // 其他登录配置... }, // 授权提供者配置... );补充Firebase控制台配置
- 在Firebase控制台→身份验证→登录方法→Google→「授权域」,添加你的自定义scheme回调(比如
yourapp://oauthredirect) - 将EAS构建的安卓包SHA-1指纹添加到Firebase项目设置的安卓应用中(可通过
eas credentials命令获取或生成)
- 在Firebase控制台→身份验证→登录方法→Google→「授权域」,添加你的自定义scheme回调(比如
验证构建
重新执行EAS构建命令:
eas build --profile development --platform android
内容的提问来源于stack exchange,提问作者Hakar Yousef
相关产品推荐
相关产品推荐

