node.js - 使用带有访问令牌的 Node JS API 的 Salesforce 身份验证
问题描述
我需要从 SalesForce API 中检索 Auth Code。我在 Postman 中创建了如下场景。
- 使用以下参数配置新令牌
一旦我按下“获取新的访问令牌”,邮递员就会打开一个弹出窗口并要求在登录提示中输入
Username
和。Password
它显示了 SalesForce 的登录页面。然后我使用 JSON 正文作为 POST 请求访问端点。
我需要在 NodeJS 中重新创建这个场景,以便将整个过程作为一个单独的过程来工作,绕过所有的登录提示。
我正在使用以下方法来启动此任务以获取令牌。但是,我找到的资源不符合我的要求。
作为第一步,我使用salesforce-oauth2
了如下的 npm 包。
oauth2 = require('salesforce-oauth2');
var callbackUrl = "https://test.salesforce.com/services/oauth2/success",
consumerKey = "3MVG9sLbBx**********************2Qi.v***Vlhg3",
consumerSecret = "3MV**bBx**********************2Qi.v***Vlhg3";
var uri = oauth2.getAuthorizationUrl({
redirect_uri: callbackUrl,
client_id: consumerKey,
scope: 'api', // 'id api web refresh_token'
// You can change loginUrl to connect to sandbox or prerelease env.
//base_url: 'https://test.my.salesforce.com'
});
return response.redirect(uri);
当我调试上面的代码时,它返回一个指向登录页面的 URL。我不想通过这一步,因为我的要求是在不打开任何中间身份验证弹出窗口的情况下获取 Auth-Code。
我该如何进行呢?在第 3 步之前编程以从 SalesForce API 获取 Auth Token 有什么想法吗?
提前致谢。
解决方案
您标记了这个salesforce-communities。重要的是,它真的是针对社区(“体验云”)用户还是内部人员?Salesforce 有很多 OAuth2 流程可供选择:https ://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_flows.htm&type=5
如果您知道密码并且它是内部用户(也许是真人,也许您有一些专门的“集成用户”) - 您可以使用用户名密码流程。没有登录页面,也没有 OAuth 同意步骤。但
此流程不支持范围或刷新令牌。Experience Cloud 站点不支持 OAuth 2.0 用户名-密码流。
您也许可以使用JWT Flow。您需要用户名(无密码),并且您的 Node 应用程序将发送一条使用您之前上传到 SF“已连接应用程序”的证书签名的消息。您甚至可以将用户标记为预授权,这样就没有同意屏幕。
除此之外,我认为社区可用的所有 OAuth2 流程都需要人工输入密码。您可以在 url 中传递登录提示以保存用户名,但在返回您的应用程序之前传递他们需要在 SF 登录页面上提供.
挖掘一点帮助,很高兴被证明是错误的。
推荐阅读
- java - Java - 按字符读取文件并计算行数
- excel - 加权平均值全天更新
- amazon-web-services - 我正在尝试为树莓派制作 Alexa 技能,但 AMAZON.LITERAL 不再可用
- electron - 为什么电子使用旧版本的铬?
- android - 捏缩放recyclerview问题
- python - 如何将两个列表中的所有值相乘并获得相应的矩阵
- java - 如何使用 MediaMetadataRetriever() 从 .mp3 文件中检索专辑封面
- mysql - mySql每隔一个工作日获取日期
- javascript - 包含一个或多个 a 的字符串的正则表达式
- events - 事件溯源和密码更改安全隐患