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

SAP CPI通过Rojo适配器连Salesforce REST API报invalid_grant错误如何解决

问题根因
  • OAuth授权类型不匹配:Rojo Salesforce适配器默认使用密码授权流(Password Grant Flow)做身份校验,你之前用Postman测试的是授权码流(Authorization Code Flow),两类流的校验逻辑完全独立,授权码流校验通过无法证明密码流配置正确。
  • 密码拼接规则错误:Salesforce密码流要求请求的password参数为「用户登录密码+安全令牌」直接拼接的完整字符串,你将密码和安全令牌分开存储在CPI不同安全物料中,若适配器没有自动拼接逻辑,会直接触发密码校验失败。
  • 已连接应用权限策略问题:你创建的已连接应用如果仅配置了授权码流相关权限,密码流默认会额外做IP校验,若目标用户IP未加入Salesforce信任范围、或应用IP限制未放宽,也会触发授权失败。
  • 实例域名配置错误:密码流请求必须指定对应用户归属的Salesforce实例域名,若CPI侧配置为通用登录域名、或混淆了生产/沙箱域名,也会返回invalid_grant错误。
  • 用户权限缺失:连接使用的Salesforce用户若未开启API访问权限、账号被冻结或密码过期,密码流校验时都会触发该错误,授权码流因使用浏览器主动登录可能绕开了这类限制。
解决方案
  • 确认适配器授权类型配置:在Rojo Salesforce适配器配置页,明确选择授权类型为Password OAuth 2.0,和你使用的凭证类型匹配。
  • 调整密码存储规则:将CPI安全物料中存储的用户密码、安全令牌直接拼接为一个完整字符串,替换原有用户密码安全物料的内容,无需单独配置安全令牌参数,Salesforce会自动识别密码后缀的安全令牌做校验。
  • 调整已连接应用策略:进入Salesforce设置→已连接应用→找到对应应用→编辑策略,将「IP限制」设置为「放宽IP限制(不校验IP地址)」,同时确保「允许的OAuth范围」包含api、refresh_token、offline_access三个必要范围。
  • 修正实例域名:登录连接使用的Salesforce账号,在设置→公司信息页获取对应实例域名,将CPI适配器的Salesforce根URL替换为该实例域名,不要使用通用的https://login.salesforce.com(沙箱用户对应替换为https://test.salesforce.com)。
  • 校验用户权限:确认连接使用的Salesforce用户配置文件中勾选了「API已启用」权限,账号状态为活跃、密码未过期,且无额外登录限制规则。
  • 前置验证:可先用Postman直接测试密码流校验配置正确性,请求规则如下:

请求方法:POST
请求地址:https://[你的Salesforce实例域名]/services/oauth2/token
请求体(form-data格式):

  • grant_type: password
  • client_id: 你的Consumer Key
  • client_secret: 你的Consumer Secret
  • username: 你的Salesforce用户名
  • password: 密码+安全令牌拼接后的完整字符串
    请求成功返回access_token后,再到CPI侧重新配置凭证即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:27:02