rest - Salesforce Api 登录后立即失败?

标签 rest oauth-2.0 salesforce

我正在通过用户名/密码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/

相关文章:

java - 在 Play 中返回 HTTP 状态 "created"!框架

c# - 如何让 ModelState 在 asp.net mvc web api 上工作?

java - 多个删除的 REST 架构?

oauth-2.0 - 错误 400 : invalid_scope "https://www.googleapis.com/auth/chat.bot"

string - Apex-在子字符串 ' '处没有可行的替代方法

rest - 从 Salesforce 获取文件的 Base64 数据

java - Spring REST 406 Http 错误

spring-boot - Spring Boot + oauth +oidc 添加自定义AuthenticationProvider

node.js - 无法在 Facebook 中获取访问 token

salesforce - 如何使用 Eclipse 在 Salesforce Enterprise Edition 中删除 Apex 类?