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

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

    1. 打开Firebase控制台→对应项目→设置→应用→点击「添加应用」选择安卓
    2. 填写与app.json/expo.json中android.package完全一致的包名(比如com.yourteam.yourapp)
    3. 按提示下载google-services.json,放到项目根目录
    4. 从google-services.json中提取client[0].client_info.android_client_id的值,这就是安卓客户端ID
    5. 替换eas.json中development.env.CLIENT_ID为这个安卓ID,或者新增ANDROID_CLIENT_ID环境变量
  • 配置Expo项目的原生适配

    1. 安装expo-google-services插件:
      npx expo install expo-google-services
      
    2. 在app.json/expo.json的plugins数组中添加:
      ["expo-google-services"]
      
    3. 确保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控制台配置

    1. 在Firebase控制台→身份验证→登录方法→Google→「授权域」,添加你的自定义scheme回调(比如yourapp://oauthredirect)
    2. 将EAS构建的安卓包SHA-1指纹添加到Firebase项目设置的安卓应用中(可通过eas credentials命令获取或生成)

验证构建

重新执行EAS构建命令:

eas build --profile development --platform android

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:05:25