salesforce rest api无效\u会话\u ID错误
我正在使用salesforce rest api从我的rails应用程序访问salesforce帐户。我创建了一个远程访问应用程序,并获得了id中的密钥。我能够对用户进行身份验证,并获得auth_令牌、实例url以及所有这些。但是,当我在“instance_url/services/data/v20.0”和访问令牌一起发送请求时,会出现以下错误:salesforce rest api无效\u会话\u ID错误,api,rest,salesforce,Api,Rest,Salesforce,我正在使用salesforce rest api从我的rails应用程序访问salesforce帐户。我创建了一个远程访问应用程序,并获得了id中的密钥。我能够对用户进行身份验证,并获得auth_令牌、实例url以及所有这些。但是,当我在“instance_url/services/data/v20.0”和访问令牌一起发送请求时,会出现以下错误: [{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]
[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]
我有一个开发人员salesforce帐户,并为每个配置文件启用了true API,但“已验证的网站”配置文件(不可访问)除外
拜托,有人能帮我吗
我正在使用以下请求对用户进行身份验证
HTTParty.post "login.salesforce.com/services/oauth2/token";, :body=>{"grant_type"=>"authorization_code","code"=>"abc}","client_secret"=>"abc", "client_id"=>"abc","format"=>"json","redirect_uri"=>"localhost:3000/salesforce/callback";}
返回签名、id、实例url、发布地址、访问令牌和刷新令牌
HTTParty.get "ap1.salesforce.com/services/data/v20.0";, :headers=>{"Authentication"=>"OAuth access_token", "Content-Type"=>"application/json"}
它的反应是
[{"errorCode"=>"INVALID_SESSION_ID", "message"=>"Session expired or invalid"}]
您如何将sessionId传递给/services/data/v20.0请求?如果您的访问令牌是
abc123
,那么您需要在请求中使用http头Authorization:OAuth abc123
。salesforce中的API会话将过期,无论是否有活动。
要设置每个会话的持续时间,请转到
最多8小时
干杯 如果使用Oauth,则需要使用刷新令牌流,在出现此错误时获取新的续订令牌。详情如下: 请在上面的WIKI页面链接中搜索“刷新令牌”。我遇到的问题:
- 确保在授权请求中包含范围“web”,例如
- 使用授权响应中返回的instanceUrl。在我的情况下,这是,我总是试图使用,但没有工作
- 关闭“将会话锁定到它们起源的IP地址”
- 打开“在每个请求上强制登录IP范围”
- 选择已连接应用的IP放松策略“强制IP限制”,然后
- 将Salesforce的内部IP范围10.0.0.0至10.255.255.255添加到需要使用Salesforce REST API的配置文件列表中 或者干脆放宽知识产权限制:
- 关闭“将会话锁定到它们起源的IP地址”,然后
- 选择已连接应用的IP放宽策略“放宽IP限制”
- 面临同样的问题,就我而言,密码中的字符是导致问题的原因。我添加此答案是因为上面的任何其他答案都对我有帮助。我的问题实际上是,在login.salesforce.com/services/oauth2/token请求期间,当我在JSON响应中收到它时,我正在使用access_令牌
您必须从access\u token中删除ID,正如SalesForce文档中所述:除了其他答案确定的其他可能问题,Salesforce中的
将会话锁定到其来源的IP地址
设置可能会导致代码无效。发件人:
说明启用“将会话锁定到它们起源的IP地址”时,如果使用OAuth2访问令牌执行Salesforce REST API调用,则即使在同一Apex事务中获得令牌,也可能返回无效的会话ID 分辨率
“将会话锁定到它们起源的IP地址”是严格的,在这种情况下,内部IP地址不会自动列入白名单。由于登录调用和后续REST API调用可能通过不同的内部IP地址执行,因此如果启用了所述首选项,则在使用访问令牌时可能会返回无效的会话ID 要解决此问题,您可以使用持续IP强制功能(于2015年夏季推出):
您是否在Salesforce组织中正确配置了远程访问?如果您发布了登录/查询代码,也可能会有所帮助。我认为这不是问题所在,因为会话时间设置为2小时,我在获得访问令牌后立即发送请求…………如果我发送api版本的请求,我也会得到成功响应…………“实例url/services/data/”(在标题中包含access_标记)返回[{“label”=>“Winter”11、“url”=>“/services/data/v20.0”、“version”=>“20.0”}、{“label”=>“Spring”11、“url”=>“/services/data/v21.0”、“version”=>“21.0”}…………还有什么我应该寻找的吗?如果我发送api版本的请求,我会得到成功的响应。。。。。。。。。。。。。“instance_url/services/data/(头中包含访问令牌)返回[{“label”=>“Winter”11、“url”=>“/services/data/v20.0”、“version”=>“20.0”}、{“label”=>“Spring”11、“url”=>“/services/data/v21.0”、“version”=>“21.0”}]……还有什么我应该找的吗???版本资源不需要身份验证,所以这证明不了什么。为什么不发布一些代码和/或您的实际请求。我正在使用以下请求对用户进行身份验证…….HTTParty.post”“:body=>{“grant\u type”=>“authorization\u code”,“code”=>“abc}”,“client\u secret”=>“abc”,“client\u id”=>abc“、”格式“=>”json“、”重定向“=>”}……..返回我的签名、id、实例url、发出的地址、访问令牌和刷新令牌然后我发送可用资源请求………HTTParty.get”“:headers=>{”身份验证“=>”OAuth访问令牌“、”内容类型“=>”应用程序/json}……。响应为[{”错误代码“=>”无效的会话ID、“消息”=>“会话已过期或无效”}]……有什么问题吗?@Saums:你能确切地告诉我解决方案是什么吗?我收到了相同的错误,我正在使用databasedotcom gem