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

安卓端使用Expo GoogleSignIn认证时idToken为NULL如何解决

解决方案

  • 初始化时传入的客户端ID与运行平台不匹配,当前代码统一使用了iOS客户端ID,安卓端需要传入单独在Google Cloud控制台生成的安卓类型客户端ID,需根据运行平台动态传值,修正后的参考代码如下:
import * as GoogleSignIn from 'expo-google-sign-in';
import { Platform } from 'react-native';
import Config from './你的配置文件路径';

// 按平台传入对应clientId
await GoogleSignIn.initAsync({
    clientId: Platform.OS === 'ios' ? String(Config.IOS_CLIENT_ID) : String(Config.ANDROID_CLIENT_ID),
});

const isAvailability = await GoogleSignIn.getPlayServiceAvailability();
if (isAvailability) {
    const { type, user } = await GoogleSignIn.signInAsync();
    console.log(user?.auth);
}
  • 检查Google Cloud控制台安卓客户端ID的配置信息,必须填写你应用的正确包名和SHA-1签名指纹,开发环境和生产环境的签名指纹不同,需要分别配置。如果使用Expo Go进行开发调试,还要将Expo Go的SHA-1指纹添加到信任列表中,默认值为5E:8F:16:06:2E:A3:CD:2C:4A:0D:54:78:76:BA:A6:F3:8C:AB:F6:25,也可以通过expo credentials:manager命令查看自己的开发签名指纹。
  • Expo托管项目需要在app.json/app.config.js中添加谷歌服务配置文件关联:
{
  "expo": {
    "android": {
      "googleServicesFile": "./google-services.json"
    },
    "ios": {
      "googleServicesFile": "./GoogleService-Info.plist"
    }
  }
}
  • 检查Google Cloud OAuth同意屏幕配置,如果应用还未正式发布,必须将测试使用的谷歌账号添加到测试用户列表中,未授权的测试账号登录会返回空的身份凭证。

内容的提问来源于stack exchange,提问作者naoki-haba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:03