我正在通过用户名/密码rest api 登录到 salesforce。
curl https://login.salesforce.com/services/oauth2/token -d \
"grant_type=password" -d "client_id=xxx" -d \
"client_secret=yyy" -d "username=username" -d \
"password=paswordAndSecurityToken"
{
"id": "https://login.salesforce.com/id/abc/123",
"issued_at": "139342352341",
"instance_url": "https://na12.salesforce.com",
"signature": "zzz",
"access_token": "xyz123"
}
现在我想转身并列出可用的 REST 资源,如 here 中所述。 。所以我请求
curl https://na1.salesforce.com/services/data/v26.0/ -H "Authorization: Bearer xyz123"
但我得到以下内容
[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]
这对我来说意味着“Bearer”一词后面的 session ID 比 access_token 更重要。我该如何构建它?如果构造正确,为什么或如何立即获得无效的 session ID。
最佳答案
它是 token 响应中的 access_token 值,这似乎就是您正在做的事情。但我注意到您的 token 响应表示实例是 na12.salesforce.com,但您的后续请求将发送到 na1,而不是 na12。您必须将请求发送到指定的实例。由于 na1 对您的 session 一无所知(因为它在其他地方),这可以解释为什么您从 NA1 收到无效的 session 响应。
关于rest - Salesforce Api 登录后立即失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055345/