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

React Native集成Google OAuth遇12500错误,求排查方案

解决React Native Google Signin 12500错误的排查要点

针对你遇到的12500非恢复性登录失败错误,结合你的配置情况,以下是容易遗漏的排查点:

1. 修正Scope权限

你当前使用的drive.readonly是只读权限,但要往Google Sheet写入数据,需要替换为写入权限,比如:

  • https://www.googleapis.com/auth/spreadsheets:允许读写所有Google表格
  • https://www.googleapis.com/auth/drive.file:仅允许读写用户通过你的应用创建或打开的文件(更安全)

权限不匹配会导致OAuth流程验证失败,直接触发12500错误。

2. 移除Web Client ID的末尾空格

你的WEB_CLIENT_ID末尾存在多余空格:'123crnslgq7d.apps.googleusercontent.com ',这个空格会导致客户端ID验证不通过,必须删除。

3. 补全平台专属OAuth客户端配置

你只确认了Web Client ID,但React Native应用需要对应平台的客户端配置:

  • Android:在Google Console创建「Android类型」OAuth客户端,填写正确的SHA-1签名(debug和release版本都要加),且包名必须和android/app/build.gradle中的applicationId完全一致。
  • iOS:创建「iOS类型」OAuth客户端,Bundle ID要与Xcode中的Bundle Identifier匹配,同时在Xcode中启用Keychain Sharing,并在Info.plist添加对应Google客户端ID的URL Scheme。

4. 完善OAuth同意屏幕配置

  • 确保OAuth同意屏幕的应用名称、支持邮箱已正确填写,且在「范围」列表中添加了你代码中使用的所有权限Scope(比如修改后的spreadsheets权限)。
  • 即使是测试用户,也需要完成同意屏幕的基础配置并提交(无需公开审核,测试用户可正常使用)。

5. 检查原生端库配置完整性

确认@react-native-google-signin/google-signin的原生配置已完成:

  • Android:修改android/build.gradle添加Google服务依赖,android/app/build.gradle配置签名信息。
  • iOS:执行pod install,并在Info.plist中添加Google登录相关的URL Scheme和权限描述。

修正后的代码示例

import React, { useEffect } from 'react';
import {
  GoogleSignin,
  GoogleSigninButton,
  statusCodes,
} from '@react-native-google-signin/google-signin';

// 移除末尾空格
const WEB_CLIENT_ID = '123crnslgq7d.apps.googleusercontent.com';
GoogleSignin.configure({
  // 替换为写入Google Sheet所需的权限
  scopes: ['https://www.googleapis.com/auth/spreadsheets'],
  webClientId: WEB_CLIENT_ID,
  offlineAccess: true, // 可选,若需要获取刷新令牌用于后续后台请求
});

const signIn = async () => {
  try {
    await GoogleSignin.hasPlayServices();
    const userInfo = await GoogleSignin.signIn();
    console.log(userInfo)
  } catch (error) {
    console.log(JSON.stringify(error))
    // 可根据状态码做针对性处理
    switch(error.code) {
      case statusCodes.SIGN_IN_CANCELLED:
        console.log('用户取消登录');
        break;
      case statusCodes.IN_PROGRESS:
        console.log('登录流程已在进行中');
        break;
      case statusCodes.PLAY_SERVICES_NOT_AVAILABLE:
        console.log('Google Play服务版本过低或未安装');
        break;
    }
  }
};

function App(): JSX.Element {
  useEffect(()=>{
    signIn();
  }, [])

  return (
    <>
       Test
    </>
  )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:52:46