Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
salesforce rest api无效\u会话\u ID错误_Api_Rest_Salesforce - Fatal编程技术网

salesforce rest api无效\u会话\u ID错误

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"}]

我正在使用salesforce rest api从我的rails应用程序访问salesforce帐户。我创建了一个远程访问应用程序,并获得了id中的密钥。我能够对用户进行身份验证,并获得auth_令牌、实例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、实例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。在我的情况下,这是,我总是试图使用,但没有工作


    • 面临同样的问题,就我而言,密码中的字符是导致问题的原因。

      我添加此答案是因为上面的任何其他答案都对我有帮助。我的问题实际上是,在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年夏季推出):

    • 关闭“将会话锁定到它们起源的IP地址”
    • 打开“在每个请求上强制登录IP范围”
    • 选择已连接应用的IP放松策略“强制IP限制”,然后
    • 将Salesforce的内部IP范围10.0.0.0至10.255.255.255添加到需要使用Salesforce REST API的配置文件列表中
    • 或者干脆放宽知识产权限制:

    • 关闭“将会话锁定到它们起源的IP地址”,然后
    • 选择已连接应用的IP放宽策略“放宽IP限制”

    • 您是否在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