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

OmniAuth集成LinkedIn认证失败:缺失client_secret参数求助

解决OmniAuth集成LinkedIn时缺失client_secret的认证失败问题

问题详情

错误日志

请求阶段已启动。
已开始为127.0.0.1处理GET "/users/auth/linkedin/callback?code=...&state=..." 请求,时间为2022-09-14 20:50:20 +0200
D, [2022-09-14T20:50:20.537126 #37240] DEBUG -- omniauth: (linkedin) 回调阶段已启动。
E, [2022-09-14T20:50:21.021252 #37240] ERROR -- omniauth: (linkedin) 认证失败!invalid_credentials: OAuth2::Error, invalid_request: 缺少必填参数"client_secret"
{"error":"invalid_request","error_description":"缺少必填参数\"client_secret\""}
由Users::OmniauthCallbacksController#failure作为HTML处理

环境信息

  • Ruby版本:3.2.0
  • Rails版本:7.0.4

使用的Gem

gem 'omniauth'
gem 'omniauth-linkedin-oauth2'

解决步骤

  1. 获取LinkedIn应用的Client Secret
    登录LinkedIn开发者平台,进入目标应用,在「Auth」页面找到「Client Secret」字段,复制该密钥值(注意妥善保管,不要公开泄露)。

  2. 完善OmniAuth的LinkedIn策略配置
    打开项目中的config/initializers/omniauth.rb文件(无则新建),确保配置同时包含client_id和client_secret参数:

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :linkedin_oauth2, 
               ENV['LINKEDIN_CLIENT_ID'], 
               ENV['LINKEDIN_CLIENT_SECRET'],
               # 根据需求添加权限范围,示例为基础资料和邮箱
               scope: 'r_liteprofile r_emailaddress'
    end
    
  3. 配置环境变量存储密钥

    • 推荐用dotenv-rails管理环境变量:在Gemfile中添加gem 'dotenv-rails',执行bundle install完成安装。
    • 在项目根目录创建.env文件,写入:
      LINKEDIN_CLIENT_ID=你的LinkedIn应用Client ID
      LINKEDIN_CLIENT_SECRET=你复制的LinkedIn应用Client Secret
      
    • 将.env文件添加到.gitignore中,防止密钥被提交到版本控制系统。
  4. 重启Rails服务器
    所有配置修改完成后,必须重启Rails服务器,确保新配置生效。

  5. 验证修复效果
    重新发起LinkedIn认证流程,检查是否仍出现缺少必填参数"client_secret"的错误,若配置正确,认证流程将正常进行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:25:16