获取记录的Salesforce API抛出错误无效会话
我使用的是使用API获取记录的标准方法。 它在工作台上工作。 但是,如果我浏览URL,就会出现错误:获取记录的Salesforce API抛出错误无效会话,api,get,salesforce,apex,Api,Get,Salesforce,Apex,我使用的是使用API获取记录的标准方法。 它在工作台上工作。 但是,如果我浏览URL,就会出现错误: <Errors> <Error> <errorCode>INVALID_SESSION_ID</errorCode> <message>Session expired or invalid</message> </Error> </Errors> 另一个网址: https://myinstance.
<Errors>
<Error>
<errorCode>INVALID_SESSION_ID</errorCode>
<message>Session expired or invalid</message>
</Error>
</Errors>
另一个网址:
https://myinstance.salesforce.com/services/apexrest/Account/ID
我还编写了一个apex类,用于根据ID获取用户名:
@RestResource(urlMapping='/User/*')
global with sharing class UserManagerAPI
{
@HttpGet
global static User doGet()
{
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
String userId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
User result = [SELECT Name FROM User WHERE Id = :userId];
return result;
}
}
如何通过Apex类将此API的URL共享给希望使用该API的任何人 看起来您正在遵循trailhead模块,并且您的UserManagerAPI是正确的。在为自定义REST服务构建URL时,您需要添加一个URL,然后附加
/services/apexrest/
。对于您的UserManagerAPI
服务,资源是/User
,因此完整的服务URL是https://.salesforce.com/services/apexrest/User
默认情况下,自定义REST服务遵循与许多现成的Salesforce API相同的安全语义。也就是说,调用方必须提供访问令牌才能调用API。必须通过oAuth授权获得访问令牌。发件人:
在进行RESTAPI调用之前,必须对应用程序进行身份验证
使用OAuth2.0的用户。为此,您需要:
会话已过期或无效错误消息
另一种更有利的可能性是,您已经完成了上述所有操作,并以有效的方式获得了访问令牌,但令牌确实过期了。在这种情况下,您只需要通过重复oAuth授权流来获得一个新的令牌
关于您尝试调用Account对象上的标准REST服务,/services/data/v45.0/sobjects/Account
是有效的资源<代码>/services/data/v45.0/sobjects/Account/ID
不是有效的资源,但是/services/data/v45.0/sobjects/Account/{ID}
中的{ID}
是帐户记录ID将起作用
@RestResource(urlMapping='/User/*')
global with sharing class UserManagerAPI
{
@HttpGet
global static User doGet()
{
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
String userId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
User result = [SELECT Name FROM User WHERE Id = :userId];
return result;
}
}