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

使用Laravel Socialite stateless模式Google登录报401无效凭证如何解决

401无效凭证错误排查方案

该错误来自Google OAuth的用户信息接口返回,核心原因是你传递的认证凭证不被Google认可,可按以下顺序排查:

1. 优先校验access token本身有效性

  • 直接用Postman或curl调用https://www.googleapis.com/oauth2/v3/userinfo接口,请求头携带Authorization: Bearer 你获取到的token,如果直接调用也报错,说明token本身无效,和后端Socialite代码无关
  • 确认前端/客户端传递的是已交换完成的access token,不是Google OAuth返回的授权码code,很多场景下会误把code当成token传给后端,导致校验失败
  • 检查token有效期:Google的access token默认有效期仅1小时,过期的token调用接口必然返回401
  • 确认申请token时的scope包含openid profile email,权限不足的token无法调用用户信息接口

2. 检查Google OAuth配置

  • 确认config/services.php内的google配置项和Google Cloud控制台完全一致:client_id、client_secret没有拼写错误,回调地址和客户端申请token时填写的回调地址完全匹配,末尾多斜杠、域名不一致都会导致token校验失败
  • 如果你用移动端SDK获取的token,确认后端使用的client_id和移动端申请token用的client_id属于同一个Google Cloud项目,且应用类型匹配(例如Android端生成的token不能用Web端的client_id校验)

3. 代码层面排查

  • 增加临时日志打印$request->token的完整内容,确认参数没有被中间件篡改、没有多余空格或编码错误
  • 可临时替换Socialite调用逻辑,直接手动请求接口校验问题是否出在Socialite封装层:
// 临时测试代码,替换原有Socialite调用部分
$response = \Illuminate\Support\Facades\Http::withToken($accessToken)->get('https://www.googleapis.com/oauth2/v3/userinfo');
if ($response->failed()) {
    dd($response->body());
}
$userInfo = $response->json();

如果手动请求能正常返回用户信息,说明是Socialite配置缓存问题,执行php artisan config:clear清空配置缓存后重试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:01