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

Rails集成QuickBook OAuth2提示redirect_uri参数无效如何解决

问题排查与修复方案

核心错误原因

redirect_uri报错本质是OAuth2授权流程中,发起授权请求时传递的redirect_uri、换取access_token时传递的redirect_uri、Intuit开发者后台配置的重定向URI三者必须完全一致,你的代码里存在多处不匹配问题:

1. 授权请求中redirect_uri传值错误

你在authenticate方法里错误使用了授权接口自身的地址作为redirect_uri,实际应该传入用户授权后回调的oauth_callback地址。

2. 回调方法残留OAuth1废弃代码

OAuth2流程不需要session[:qb_request_token]相关逻辑,这行冗余代码会引发额外报错。

3. 重定向地址未匹配后台配置

本地测试时需要确保你在Intuit开发者后台配置的重定向URI和代码中使用的地址完全一致,包括协议、域名、端口、路径。

修正代码

控制器代码修正

def authenticate
  # 直接使用路由生成的完整回调地址,不需要手动拼接,避免写错
  redirect_uri = oauth_callback_vendors_url
  grant_url = ::QB_OAUTH2_CONSUMER.auth_code.authorize_url(
    redirect_uri: redirect_uri,
    response_type: "code",
    state: SecureRandom.hex(12),
    scope: "com.intuit.quickbooks.accounting"
  )
  redirect_to grant_url
end

def oauth_callback
  # 这里的redirect_uri必须和授权时传的完全一致
  redirect_uri = oauth_callback_vendors_url
  resp = ::QB_OAUTH2_CONSUMER.auth_code.get_token(params[:code], redirect_uri: redirect_uri)
  # 删除原来的OAuth1冗余代码
  quickbooks_credentials.update_attributes(
    access_token: resp.token,
    refresh_token: resp.refresh_token,
    realm_id: params[:realmId]
  )
  # 建议补充跳转逻辑,比如跳转到vendors列表页
  redirect_to vendors_path, notice: "QuickBooks授权成功"
end

必须检查的配置项

登录Intuit开发者后台,找到你的应用配置页,在OAuth2设置的「重定向URI」列表中,精确添加你本地测试用的回调地址:http://localhost:3000/vendors/oauth_callback
如果是生产环境,需要对应添加生产域名的回调地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:03