我创建了一个连接的应用程序,其中我通过新连接的应用程序中提供的消费者密钥和消费者秘密选择了 OAuth 范围“访问和管理您的数据 (api)”和“完全访问(完全)”,我已生成访问令牌。
但是,当我向在沙箱实例中创建的 RestResource 发送新的放置请求时,标头键为“Authorization”,值为“Bearer my_access_token”,我收到以下错误。
[
{
"message": "Session expired or invalid",
"errorCode": "INVALID_SESSION_ID"
}
]
我发送请求的网址如下所示
https://my_instance_url/services/apexrest/CustomerAccountSync
我尝试通过在标头中添加“OAuth”而不是“Bearer”来更改发送访问令牌的方式。但我仍然收到相同的错误响应。
任何人都可以告诉我为什么会发生这种情况吗?我正在使用“Insomnia”进行 API 调用。
您确定要发送到不同的端点吗?登录调用可能与通用
login.salesforce.com
或 test.salesforce.com
背道而驰。但是登录后的所有请求都需要使用响应中返回的instance_url
,就像从现在开始必须使用access_token
一样。
它将采用
https://mydomain.my.salesforce.com
格式,因此您需要 https://mydomain.my.salesforce.com.salesforce.com/services/data/v50.0/query?q=SELECT Id FROM Account
更多如何测试的信息:https://stackoverflow.com/a/63255845/313628
文档:https://developer.salesforce.com/docs/atlas.en-us.api_iot.meta/api_iot/qs_auth_access_token.htm(来自不同的REST API,但适用相同的想法)
尝试再次保存命名凭据,然后再次激活会话希望它有帮助。