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

Auth0自定义Google社交登录报错‘Invalid user id’求助

解决Auth0 Custom Social登录Google时的「Invalid user id」错误

问题原因

出现「Invalid user id」错误的核心原因是:你配置的获取用户资料脚本没有返回Auth0识别用户所需的唯一标识字段。Auth0要求该脚本必须返回包含user_id(或标准OIDC字段sub)的用户对象,否则无法完成用户身份关联。

解决方案

1. 修正获取用户资料脚本

替换当前的脚本为以下两种方式之一:

方式一:调用Google用户信息接口(推荐)

通过accessToken调用Google的官方用户信息接口,获取完整用户资料并返回给Auth0:

function(accessToken, ctx, cb) {
  request.get('https://www.googleapis.com/oauth2/v3/userinfo', {
    headers: { Authorization: 'Bearer ' + accessToken }
  }, function(err, resp, body) {
    if (err) return cb(err);
    var user = JSON.parse(body);
    cb(null, {
      user_id: user.sub, // Google返回的唯一用户ID,必须包含
      email: user.email,
      email_verified: user.email_verified,
      name: user.name,
      picture: user.picture
    });
  });
}

方式二:解析id_token的Payload

利用ctx中的id_token(JWT格式)直接解析出用户信息,无需额外请求:

function(accessToken, ctx, cb) {
  var jwt = require('jsonwebtoken');
  var payload = jwt.decode(ctx.id_token);
  if (!payload) return cb(new Error('Failed to decode id_token'));
  
  cb(null, {
    user_id: payload.sub, // 核心唯一标识字段
    email: payload.email,
    email_verified: payload.email_verified,
    name: payload.name,
    picture: payload.picture
  });
}

2. 验证其他配置细节

  • 确认GCP控制台的授权范围已包含openid(你当前设置的openid email符合要求,若需要更多用户信息可追加profile)。
  • 检查GCP的测试用户列表是否包含你用于测试的邮箱地址,确保在测试状态下能正常授权。
  • 确认Auth0中的Custom Social配置里,「范围」选项已正确启用空格分隔(你当前已设置,无需修改)。

测试验证

修改脚本后,回到Auth0的Custom Social测试页面,重新发起登录流程,此时Auth0能正确获取到用户的唯一ID,「Invalid user id」错误即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:05:54