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

Ruby on Rails调用API报Authorization has been denied授权被拒绝问题

解决方案

核心错误原因

你的授权错误完全由URL拼接不规范导致,共存在3处语法问题:

  • URL参数分隔符使用错误:HTTP协议规定URL中首个查询参数前用?,后续所有参数需用&拼接。你的代码中millesime=2020后错误使用?拼接token参数,会导致服务端无法正常识别token参数,直接判定授权失败。
  • 字符串未启用插值逻辑:你用单引号包裹URL,Ruby中单引号字符串不会解析内部的变量、占位符表达式,导致路径里的siren占位符、KEY变量都不会被替换为实际值。
  • 占位符格式错误:Ruby字符串插值的语法为#{变量名},你使用的(siren)不符合语法规范,无法被识别为动态参数。

修复后的代码

写法1:直接修正URL拼接逻辑

def find_with(siren)
  # 改用双引号,修正参数分隔符和插值语法,把KEY替换为你实际的有效API密钥
  @request = HTTParty.get("https://api.datainfogreffe.fr/api/v1/Entreprise/notapme/performance/#{siren}?millesime=2020&token=KEY")
  @result = JSON.parse(@request.body)
end

写法2:用HTTParty内置参数传递(更规范,避免手动拼URL出错)

def find_with(siren)
  @request = HTTParty.get(
    "https://api.datainfogreffe.fr/api/v1/Entreprise/notapme/performance/#{siren}",
    query: {
      millesime: 2020,
      token: "你的实际API密钥"
    }
  )
  @result = JSON.parse(@request.body)
end

验证方法

如果修改后仍有问题,可以在请求后加一行代码打印实际请求地址,和你命令行调用成功的地址做对比即可快速定位差异:

puts @request.request.uri.to_s

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:05