[英]Salesforce API to get a record throws error Invalid Session
我正在使用使用API獲取記錄的標准方法。 它可以在工作台上工作。 但是,如果我瀏覽URL,則會收到錯誤消息:
<Errors>
<Error>
<errorCode>INVALID_SESSION_ID</errorCode>
<message>Session expired or invalid</message>
</Error>
</Errors>
以下是網址:
https://myinstance.salesforce.com/services/data/v45.0/sobjects/Account/ID
另一個網址:
https://myinstance.salesforce.com/services/apexrest/Account/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;
}
}
如何通過Apex類與任何想使用該API的人共享該API的URL?
看來您正在關注Apex Web服務 Trailhead模塊,並且UserManagerAPI是正確的。 為自定義REST服務構建URL時,您需要確定實例 ,然后附加/services/apexrest/<your REST resource>
。 對於UserManagerAPI
服務,資源為/User
因此完整的服務URL為https://<myInstance>.salesforce.com/services/apexrest/User
。
默認情況下,自定義REST服務遵循與許多現成的Salesforce API相同的安全語義。 也就是說,調用者必須提供訪問令牌才能調用API。 該訪問令牌必須通過oAuth授權獲得。 從了解身份驗證 :
在進行REST API調用之前,您必須使用OAuth 2.0對應用程序用戶進行身份驗證。 為此,您需要:
- 在Salesforce組織中將您的應用程序設置為連接的應用程序。
- 確定正確的Salesforce OAuth端點供您連接的應用程序使用。
- 通過幾種不同的OAuth 2.0身份驗證流程之一對連接的應用程序用戶進行身份驗證。
根據客戶端ID /憑證/等和Salesforce中的用戶帳戶的組合來授權授予。 用戶帳戶已附加到許可證+配置文件; 這兩項共同賦予用戶某些特權。 如果您使用便宜的許可證或特權不足的配置文件,則可能會看到Session expired or invalid
錯誤消息。
另一個更好的可能性是您已完成上述所有操作並以有效方式獲得了訪問令牌,但該令牌確實過期了。 在這種情況下,您只需要通過重復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}
是一個帳戶記錄ID)可以使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.