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

React Native Expo应用安卓端谷歌登录重定向至Google.com问题排查

安卓谷歌登录重定向问题排查与解决方案(React Native Expo + Firebase)

问题背景

  • 安卓应用因下架重命名包名,导致iOS与安卓包名不一致
  • 仅安卓设备在谷歌登录时出现重定向至Google.com的问题,怀疑由包名差异引发

现有配置与代码

app.config.js 配置

"slug": "iosBundle2023",
"scheme": "iosBundle2023",
...
"ios": {    
  "bundleIdentifier": "com.myMobileApp.iosBundle2023",    
  "infoPlist": {
        "CFBundleDisplayName": "iosBundle2023"
      },
    ...
    },
"android": {
      "package": "com.myMobileApp.androidBundleNew",
    ...
    }
}

登录代码

import * as Google from 'expo-auth-session/providers/google'
import { GoogleAuthProvider, signInWithCredential } from 'firebase/auth'

const [request, response, promptAsync] = Google.useIdTokenAuthRequest({
    webClientId: Constants.expoConfig?.extra?.GOOGLE_WEB_ID,
    clientId: Constants.expoConfig?.extra?.GOOGLE_CLIENT_ID,
    iosClientId: Constants.expoConfig?.extra?.GOOGLE_IOS_ID,
    androidClientId: Constants.expoConfig?.extra?.GOOGLE_ANDROID_ID,
    scopes: ["profile", "email"]
})

useEffect(() => {
    if (response?.type === 'success') {
        fetchUserInfo(response.authentication.accessToken)
    }      
}, [response])

async function fetchUserInfo(token) {
    
    const credential = GoogleAuthProvider.credential(null, token)
    signInWithCredential(auth, credential)
        .then((userCredential) => {
            // User is signed in with Firebase, you can access user data here
        })
        .catch((error) => {
            // Handle any errors that occur during sign-in
         
        })
}

排查方向与解决方案

1. 谷歌云平台配置校验

  • 确认安卓OAuth 2.0客户端ID对应的包名是更新后的com.myMobileApp.androidBundleNew,在谷歌云控制台「API和服务→凭据」中找到对应客户端ID,检查包名匹配情况
  • 同步更新安卓客户端ID的SHA-1指纹,若更新包名后重新生成了应用签名,需确保指纹信息与当前应用一致
  • 为新包名创建独立的OAuth 2.0客户端ID,避免复用旧包名的配置

2. Expo配置调整

  • 检查app.config.js中安卓package字段是否确实为新包名,无拼写错误
  • 确保环境变量GOOGLE_ANDROID_ID指向新包名对应的谷歌客户端ID,而非旧ID

3. Expo Auth Session配置优化

  • 在Google.useIdTokenAuthRequest中,移除通用clientId配置,仅保留androidClientId和iosClientId,避免通用ID干扰安卓端逻辑
  • 若自定义了重定向URI,需确保安卓端格式为com.myMobileApp.androidBundleNew:/oauth2redirect/google,并与谷歌控制台配置一致

4. Firebase控制台同步

  • 在Firebase控制台「身份认证→登录方法→谷歌登录」中,添加新包名对应的安卓客户端ID,或更新现有客户端ID的包名信息
  • 检查Firebase项目的OAuth重定向URI列表,确认包含安卓端的正确重定向地址

5. 测试注意事项

  • 卸载安卓端旧应用,清除Expo Go缓存,避免旧配置残留
  • 执行expo prebuild生成原生项目文件,检查安卓AndroidManifest.xml中包名和intent过滤器配置是否正确

内容的提问来源于stack exchange,提问作者Hamaad Fahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:05:15