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
相关产品推荐
相关产品推荐

