salesforce rest api INVALID_SESSION_ID错误

| 我正在使用salesforce rest api从我的rails应用程序访问salesforce帐户。我创建了一个远程访问应用程序,并获得了密钥N id。我能够对用户进行身份验证,并获得auth_token,实例url等。但是,当我在\“ instance_url / services / data / v20.0 \”发送请求以及访问令牌时,出现此错误:
[{\"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,instance_url,issued_at,access_token和refresh_token
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请求?,如果access_token是is4ѭ,则请求中需要一个header5ѭ的http标头。     
无论是否有活动,salesforce中的API会话都会过期。 要设置每个会话的持续时间,请依次转到设置>管理设置>安全控制>会话设置> 最长为8小时。 干杯!     
如果您使用的是Oauth,则需要使用“刷新令牌”流程,以解决此错误,以获取新的续订令牌。以下是更多详细信息:http://wiki.developerforce.com/index.php/Digging_Deeper_into_OAuth_2.0_on_Force.com 请在上面的WIKI页面链接中搜索\“刷新令牌\”。     
我遇到的问题: 确保在授权请求中包括范围“ \ web \”,例如 https://login.salesforce.com/services/oauth2/authorize?response_type=code&clientId=xxx&redirect_uri=http://www.example.com&scope=id+api+refresh_token+web 使用授权响应中返回的instanceUrl。在我的情况下,这是https://eu2.salesforce.com,而我一直尝试使用无法正常工作的https://na1.salesforce.com     
面对相同的问题,在我的情况下,密码中的
<
>
字符引起了问题。     
我添加此答案是因为上述任何其他答案都对我有所帮助。我的问题实际上是我在使用login_salesforce.com/services/oauth2/token请求期间在JSON响应中收到的access_token。 您必须从access_token中删除ID,如SalesForce文档中所述:\“用ID替换令牌值\”     
除了其他答案确定的其他可能问题之外,Salesforce中的
Lock sessions to the IP address from which they originated
设置可能是导致有效代码的可能因素。从以下Salesforce KB文章中:   描述   如果启用了“将会话锁定到其会话的IP地址”,则如果使用OAuth2访问令牌执行Salesforce REST API调用,即使在同一Apex事务中获得了令牌,也可能会返回INVALID_SESSION_ID。      解析度   \“将会话锁定到其发起的IP地址\”是严格的,在这种情况下,内部IP地址不会自动列入白名单。由于登录标注和后续的REST API标注可能是通过不同的内部IP地址执行的,因此如果启用了上述首选项,则在使用访问令牌时可能会返回INVALID_SESSION_ID。      为了解决这个问题,您可以使用连续IP强制执行功能(在Summer \ '15中引入):         将\“将会话锁定到其起源的IP地址\”关闭,   打开\“在每个请求上强制登录IP范围\”,   选择连接的应用程序的IP放松策略\“强制IP限制\”,然后   将Salesforce的内部IP范围10.0.0.0到10.255.255.255添加到需要使用Salesforce的REST API的配置文件列表中。         或只是放松IP限制:         关闭\“将会话锁定到其起源的IP地址\”,然后   选择连接的应用程序的IP放松策略\“放松IP限制\”        

要回复问题请先登录注册