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

React Native Expo集成Google登录遇Error 400: invalid_request授权错误

Expo React Native Google登录 Error 400: invalid_request 排查方案

1. 核对expoClientId与Web Client ID的匹配性

expoClientId必须对应Google Cloud中创建的Web Client ID,而非Android Client ID。很多人会搞混这两个ID,直接检查Login.js里的expoClientId是否是Web Client ID的完整字符串。

2. 检查OAuth同意屏幕的测试用户配置

因为你选了External用户类型,默认处于测试模式,只有添加到测试用户列表的账号才能正常登录:

  • 进入Google Cloud Console的OAuth同意屏幕页面
  • 滚动到「测试用户」板块,添加你用来测试的Google账号邮箱
  • 若要面向所有用户使用,需完成应用验证,但测试阶段优先添加测试用户即可快速排查

3. 确认SHA-1指纹的正确性

Expo开发环境需要使用Expo提供的调试SHA-1,而非本地生成的指纹。通过以下命令获取:

expo credentials:manager

选择对应Android项目,查看调试证书的SHA-1,替换Google Cloud中Android Client ID绑定的SHA-1值。生产环境再切换为自己的签名证书指纹。

4. 校验app.json配置的一致性

  • 确认expo.slug为codebox,和重定向URI里@username/codebox的slug完全一致
  • 确认expo.android.package是com.panditsamik.codebox,和Android Client ID的包名完全匹配(大小写也不能错)

5. 完善OAuth同意屏幕与Web Client ID的域名设置

  • OAuth同意屏幕的「授权域」要添加auth.expo.io,不能只填expo.io
  • Web Client ID的「授权JavaScript源」必须包含https://auth.expo.io,重定向URI要严格对应https://auth.expo.io/@你的Expo用户名/codebox,注意用户名要和你Expo账号的用户名完全一致(区分大小写)

6. 清理缓存并重启服务

缓存可能导致配置不生效,按以下步骤操作:

  • 在Expo客户端长按项目图标,选择清除缓存
  • 重启Expo开发服务器:expo start -c
  • 重新刷新或构建应用

7. 检查Login.js的授权请求代码

确保授权请求的配置无错误,示例参考:

import * as Google from 'expo-auth-session/providers/google';

const [request, response, promptAsync] = Google.useAuthRequest({
  expoClientId: '你的Web Client ID',
  androidClientId: '你的Android Client ID',
  scopes: ['profile', 'email'],
});

确认scopes包含必要权限,没有多余参数导致请求非法。

内容的提问来源于stack exchange,提问作者Samik Pandit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:25:56