Session 使用访问令牌已过期或无效

Session expired or invalid on using access token

我创建了一个连接的应用程序,我在其中选择了 OAuth 范围“访问和管理您的数据(api)”和“完全访问(完全)”通过消费者密钥和消费者秘密在新连接的应用程序中可用,我已经生成了一个访问令牌。

但是,当我向我在沙箱实例中创建的 RestResource 发送新的放置请求时,header 键为“授权”,值为“Bearer my_access_token”,我是收到以下错误。

[
  {
    "message": "Session expired or invalid",
    "errorCode": "INVALID_SESSION_ID"
  }
]

我向其发送请求的 url 看起来像这样

https://my_instance_url/services/apexrest/CustomerAccountSync

我尝试通过在 header 中添加“OAuth”而不是“Bearer”来更改我发送访问令牌的方式。但是我仍然收到相同的错误响应。

谁能告诉我为什么会这样?我正在使用“Insomnia”拨打 API 电话。

您确定要发送到不同的端点吗?登录调用可能会违反通用 login.salesforce.comtest.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://developer.salesforce.com/docs/atlas.en-us.api_iot.meta/api_iot/qs_auth_access_token.htm(来自不同的 REST API 但同样的想法适用)