因此,根据Salesforce的SOAP api的文档,如果我在登出前登录并启动一个需要1分钟的进程,那么其他人使用相同的凭据登录并开始另一个需要30秒才能完成的进程注销,当第二个用户注销时,它也将启动第一个用户。
REST api有这个问题吗?有办法吗?
答案 0 :(得分:2)
你的问题的答案是肯定的,REST Api有同样的问题。
来自官方文件:
如果使用同一用户登录多个客户端应用程序, 他们共享相同的会话。如果是客户端应用程序之一 调用logout(),它使所有客户端的会话无效 应用。 为每个客户端应用程序使用不同的用户 更容易避免这些限制。
salesforce建议我们避免这种情况的唯一方法是创建新用户。
您可以创建自己的中央服务来管理唯一会话,并将活动访问令牌提供给客户端,但这种方法远离force.com平台解决方案。
答案 1 :(得分:1)
这确实是一个会话管理问题,而不是您要使用该会话调用的任何特定API。那说,你有两个简单的选择。
a)不要调用注销,只是让会话基于不活动而过期,这样如果会话碰巧被2个不同的集成共享,它就不会导致问题。
b)切换到OAuth进行身份验证,并为每个集成提供自己的OAuth客户端/远程访问条目。 (不同的oauth客户端之间不会共享会话)。