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

使用Restforce调用Salesforce API时遇INVALID_SESSION_ID错误求助

排查Restforce与Salesforce交互时的INVALID_SESSION_ID错误

我来帮你梳理这个问题的可能原因和解决办法,结合你提到的Connected App配置,咱们一步步来排查:

1. 确认Restforce初始化参数是否正确

Restforce的实例创建需要完整且正确的OAuth参数,尤其是容易忽略instance_url和refresh_token的传入。你可以检查下你的初始化代码是否类似这样:

client = Restforce.new(
  client_id: "你的Connected App Client ID",
  client_secret: "你的Connected App Client Secret",
  refresh_token: "你获取到的刷新令牌",
  instance_url: "Salesforce返回的实例域名(比如na45.salesforce.com)",
  access_token: "你获取到的访问令牌" # 可选,Restforce会自动用refresh_token刷新
)

注意:instance_url不能用通用的login.salesforce.com,必须是授权后返回的具体实例地址,否则会导致会话无效。

2. 检查访问令牌的自动刷新是否生效

虽然你配置了永久有效的刷新令牌,但如果Restforce初始化时缺少client_secret或refresh_token,就无法自动刷新过期的访问令牌。你可以手动触发刷新试试:

client.refresh!

如果刷新成功后API调用恢复正常,说明之前的访问令牌已经过期,而自动刷新机制因为参数缺失没起作用。

3. 验证刷新令牌的有效性

即使设置了“刷新令牌在撤销前始终有效”,也要确认获取刷新令牌的流程是否正确:

  • 授权请求必须包含refresh_token和offline_access范围(你已经设置了,但要确保请求时确实传递了这些范围)
  • 第一次授权时才会返回刷新令牌,如果你后续重新授权没有加prompt=consent参数,可能不会再次返回。可以尝试重新走一遍OAuth授权流程,获取新的刷新令牌测试。
  • 也可以登录Salesforce后台,进入设置 > 应用程序 > 连接的应用程序 > 管理已授权的应用程序,查看你的用户是否有该Connected App的授权记录,确认刷新令牌未被撤销。

4. 检查IP范围限制

如果你的Connected App设置了IP限制(在Connected App的“OAuth 政策”里),而你的Rails服务器IP不在允许列表中,即使令牌正确,Salesforce也会拒绝请求并返回会话无效错误。可以暂时关闭IP限制测试,或者把服务器IP添加到允许列表。

5. 确认用户的API访问权限

别忘了检查你的Salesforce用户是否启用了API访问:进入用户详情页,找到“API启用”选项,确保它是勾选状态。没有API权限的话,即使令牌正确也无法调用API。

先从这几个方向排查,应该能定位到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:47:56