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

Expo构建Android APK时谷歌登录提示请求无效问题排查

解决Expo构建APK后谷歌登录"Access blocked: This app's request is invalid"问题

核心原因分析

Expo Go中使用webClientId正常是因为Expo的默认签名和包名已在谷歌配置中,但自建APK时用了独立的签名与包名,若谷歌控制台未做对应配置,就会触发无效请求错误。


解决方案

1. 校验Google Cloud控制台的Android客户端配置

  • SHA-1指纹必须匹配构建APK的签名:
    • 本地构建APK:用签名密钥生成指纹,执行命令:
      keytool -list -v -keystore 你的签名密钥文件.jks -alias 密钥别名
      
    • EAS构建:在EAS Dashboard查看构建的SHA-1指纹,或执行eas credentials查看
    • 将该指纹添加到Google Cloud控制台对应Android客户端的"签名证书指纹"中
  • 包名必须严格一致:确保Google Cloud中的Android客户端包名与app.json里android.package字段完全相同

2. 确认androidClientId配置正确

  • 从Google Cloud控制台的Android客户端详情页复制完整Client ID,确保.env文件中的androidClientId变量完全匹配,无拼写或空格错误
  • 代码中确保Google.useIdTokenAuthRequest正确传入androidClientId:
    const [request, response,promptAsync] = Google.useIdTokenAuthRequest({
      androidClientId: androidClientId,
    });
    

3. 修正代码中的异步逻辑问题

原代码中useEffect依赖accessToken,但setAccessToken是异步操作,会导致getUserInfo可能拿到旧的accessToken,修改如下:

useEffect(() => { 
  if(response?.type === 'success'){ 
    const { accessToken } = response.authentication;
    setAccessToken(accessToken);
    getUserInfo(accessToken); // 直接传入最新token,无需等待state更新
  }
},[response])

async function getUserInfo(token){
  let result = await fetch("https://www.googleapis.com/userinfo/v2/me",{
    headers: {Authorization: `Bearer ${token}` }
  });
  const userInfo = await result.json();
  setUserInfo(userInfo);
}

4. 可选:显式配置Redirect URI

部分场景下需手动指定重定向URI,确保与谷歌控制台配置一致:

  • 在app.json中添加scheme:
    {
      "expo": {
        "scheme": "your-app-scheme" // 自定义,比如com-yourapp-name
      }
    }
    
  • 在请求中添加redirectUri:
    import { makeRedirectUri } from 'expo-auth-session';
    
    const [request, response,promptAsync] = Google.useIdTokenAuthRequest({
      androidClientId: androidClientId,
      redirectUri: makeRedirectUri({ scheme: 'your-app-scheme' })
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:14:58