【问题标题】:Salesforce Authentication using Node JS API With Access Token使用带有访问令牌的 Node JS API 的 Salesforce 身份验证
【发布时间】:2021-05-20 13:46:24
【问题描述】:

我需要从 SalesForce API 检索验证码。我在 Postman 中创建了如下场景。

  1. 使用以下参数配置新令牌

  1. 一旦我按下“获取新的访问令牌”,Postman 就会打开一个弹出窗口并要求在登录提示中输入 UsernamePassword。它显示了 SalesForce 的登录页面。

  2. 一旦登录成功,邮递员会要求使用令牌并将其添加到此处(见下图)

  3. 然后我使用 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 有什么想法吗?

提前致谢。

【问题讨论】:

标签: node.js oauth salesforce salesforce-communities


【解决方案1】:

你标记了这个。重要的是,它真的是针对社区(“体验云”)用户还是内部人员? Salesforce 有很多 OAuth2 流程可供选择:https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_flows.htm&type=5

如果您知道密码并且它是内部用户(也许是真人,也许您有一些专门的“集成用户”) - 您可以使用 Username-Password 流。没有登录页面,也没有 OAuth 同意步骤。但是

此流程不支持范围或刷新令牌。体验云 网站不支持 OAuth 2.0 用户名-密码流程。

您也许可以使用JWT Flow。您需要用户名(无密码),并且您的 Node 应用程序将发送一条使用您之前上传到 SF“已连接应用程序”的证书签名的消息。您甚至可以将用户标记为预授权,这样就不会出现同意屏幕。

除此之外,我认为社区可用的所有 OAuth2 流程都需要人工输入密码。您可以在 url 中传递登录提示以保存用户名,但在返回之前传递他们需要在 SF 登录页面上提供到您的应用。

寻求帮助,很高兴被证明是错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2017-06-15
    • 2017-04-29
    • 2015-03-01
    • 2016-09-06
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多