React Native(Expo)集成Google Sign In遇Developer_Error问题求助
解决方案:@react-native-google-signin/google-signin Developer_Error 及 Expo Auth Session 问题
Android 端 Developer_Error 修复(EAS 构建场景)
1. 修正 webClientId 配置
当前版本的 @react-native-google-signin/google-signin 中,webClientId 需要配置Google Cloud Console 中「Web 应用」类型的 OAuth 客户端 ID,而非 Android 客户端 ID。你当前使用 Android 客户端 ID 的配置是错误的,这是导致发布版验证失败的核心原因之一:
GoogleSignin.configure({ webClientId: "WEB_CLIENT_ID.apps.googleusercontent.com", // 替换为Web应用类型的Client ID });
2. 同步 EAS 生成的 SHA1 到 Google Cloud Console
- 复制 EAS 生成的发布版 SHA1和调试版 SHA1(如果需要调试发布构建)
- 进入 Google Cloud Console → 目标项目 → API 和服务 → 凭据 → 找到对应的 Android OAuth 客户端 ID
- 编辑该客户端,将 EAS 生成的两个 SHA1 全部添加到「签名证书指纹」列表,确保应用包名与客户端配置的包名完全一致
3. 验证 EAS 构建的签名一致性
构建完成后,通过以下命令验证 APK 的签名 SHA1 是否与配置的一致:
aapt dump badging your-app.apk | grep SHA1
输出的 SHA1 需要和 Google Cloud Console 中配置的完全匹配。
iOS 端配置校验
- URL Scheme 配置:Google Cloud Console 创建的 iOS OAuth 客户端 ID 对应的 URL Scheme 格式为
com.googleusercontent.apps.[CLIENT_ID],需将其完整添加到Info.plist的CFBundleURLSchemes中,同时在react-native-google-signin配置中设置iosUrlScheme为该值。 - Team ID 匹配:确保 Google Cloud Console 中 iOS 客户端配置的「Team ID」与你 EAS 构建使用的 Apple Team ID 完全一致。
- 预构建同步:如果使用 Expo 预构建,执行
npx expo prebuild --clean确保 app.json 中的配置同步到原生 iOS 项目。
Expo Auth Session 登录无返回 Token 修复
- 修正 Redirect URI 配置:使用
AuthSession.makeRedirectUri生成正确的跳转地址,确保在 Google Cloud Console 的 Web 客户端中添加该 URI:
import * as AuthSession from 'expo-auth-session'; import * as Google from 'expo-auth-session/providers/google'; const [request, response, promptAsync] = Google.useAuthRequest({ clientId: 'YOUR_WEB_CLIENT_ID', redirectUri: AuthSession.makeRedirectUri({ useProxy: false }), });
- 正确处理响应:在
useEffect中监听登录响应,避免错误跳转:
useEffect(() => { if (response?.type === 'success') { const { accessToken, idToken } = response.authentication; // 此处处理 Token,而非跳转其他页面 } }, [response]);
- Scheme 配置校验:确保 app.json 中
expo.scheme已正确配置,且预构建后原生项目的 URL Scheme 已同步。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

