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

Laravel Socialite集成LinkedIn获取AccessToken报400错误求助

解决Laravel Socialite集成LinkedIn OAuth登录的400 Bad Request错误

针对你遇到的invalid_request错误(提示无法获取access token,涉及appid/redirect uri/code verifier),可以从以下几个关键方向排查修复:

1. 保持redirect和callback的stateless状态一致

你的代码中,redirect方法未启用stateless(),但callback方法启用了,这会导致PKCE流程中的code verifier不匹配。LinkedIn的OAuth流程要求会话状态一致,要么都用stateless,要么都不用。

修改redirect方法,添加stateless():

public function redirect($provider): \Symfony\Component\HttpFoundation\RedirectResponse
{
    if (! in_array($provider, $this->getAllowedProviders())) {
        abort(400);
    }

    return Socialite::driver($provider)->stateless()->redirect();
}

2. 严格校验重定向URI的完全匹配

LinkedIn对redirect_uri的校验极其严格,必须和开发者面板中配置的完全一致:

  • 检查协议(http/https):本地开发用http,线上必须用https,不能混合
  • 检查域名、端口、路径:比如http://localhost:8000/auth/linkedin/callback,不能少端口,也不能多/少结尾的斜杠
  • 确保.env中的LINKEDIN_REDIRECT配置和LinkedIn后台的URI完全相同

3. 验证LinkedIn应用的核心配置

  • 确认LINKEDIN_CLIENT_ID和LINKEDIN_CLIENT_SECRET在.env中没有拼写错误,完全匹配LinkedIn开发者面板中的值
  • 检查应用是否启用了「Sign In with LinkedIn」产品,并且权限配置正确(至少需要r_liteprofile和r_emailaddress权限)

4. 清除缓存并验证配置生效

执行以下命令清除Laravel缓存,确保.env的配置正确加载:

php artisan config:cache
php artisan cache:clear

5. 排查PKCE流程的code verifier问题

如果上述步骤无效,可以手动检查PKCE的code verifier是否正确生成和传递:

  • 开启Laravel的请求日志,查看redirect时生成的code challenge,和callback时发送的code verifier是否对应
  • 确保没有中间件(比如CSRF防护)篡改或删除了请求中的code参数

内容的提问来源于stack exchange,提问作者Levi Heßmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:47:44