SalesForce OAuth с использованием Nodejs, о котором вы узнаете достаточно после прочтения этого блога, чтобы вы могли создать собственное приложение nodejs для аутентификации пользователя Salesforce с помощью OAuth и Nodejs.

Покупатели - король! Это старая поговорка, но она верна. На современном рынке может быть немного сложно поставить их в центр внимания, но Salesforce помогает нам в этом. Он управляет вашими клиентами наиболее эффективным и быстрым способом. Salesforce - это облачный продукт для управления взаимоотношениями с клиентами. Это помогает отделу продаж любой организации проанализировать свою клиентскую базу и способы развития бизнеса. Честно говоря, понять Salesforce не так-то просто, и я не буду рассказывать об этом сегодня. Я продемонстрирую вам, как мы можем создать приложение Node, которое будет взаимодействовать с экземпляром SalesForce для аутентификации пользователя SalesForce.

Почему Node

Может быть много причин, например, Node.js - одна из самых быстрорастущих технологий, очень эффективная для создания интерактивности на стороне пользователя из-за своей однопоточной природы, и еще одна причина может заключаться в том, что мы являемся NodeXperts.

Node сейчас довольно популярен, и может наступить день, когда вам придется внедрить Salesforce OAuth с использованием Nodejs в своем приложении, тогда вы должны знать, что это так же просто, как съесть пирог.

Создать приложение, подключенное к SalesForce

Надеюсь, у вас есть учетная запись в SalesForce, в противном случае зарегистрируйтесь. Это не займет даже 2 минут. Для OAuth у вас должно быть подключенное приложение. Это приложение, которое подключается к серверу SalesForce через API данных и идентификацию.

Для его создания просто зайдите в Настройка - ›Диспетчер приложений -› Создать новое подключенное приложение и заполните необходимые поля. Однако вы должны включить OAuth и заполнить поле URI перенаправления. Это важно, потому что после того, как пользователь завершит процесс аутентификации, это URL-адрес, на который SalesForce будет перенаправлять, и вы хотите получить от него код аутентификации. Вам нужен код авторизации, чтобы получить токен доступа.

Звучит чушь !! Не беспокойтесь, проверьте блок-схему вверху, чтобы узнать, как это будет работать.

Создав связанное приложение, запишите его ключ потребителя и секрет потребителя и redirect_url. Они понадобятся вам в следующих нескольких шагах. .

В поле URI перенаправления я передаю http: // localhost: 3000 / getAccessToken, так как я буду создавать маршрут с этим именем в своем приложении, которое работает на порту 3000.

Установить JSForce

Есть замечательный пакет NPM, названный JSForce, который предоставляет API продаж. Другой способ сделать это - вызвать API-интерфейсы Salesforce из вашего приложения, которые в основном представляют собой некоторые запросы GET / POST. Но я предпочитаю использовать модули, которые обертывают эти API, это не только делает код небезопасным, но и чистым.

Просто установите его с помощью этой команды,

npm install --save jsforce

После установки вы можете получить доступ к этому пакету с помощью

const jsforce = require('jsforce');

Настроить экспресс-маршруты

Здесь мы используем экспресс, который используется для создания маршрутов в приложениях узла. Теперь мы создадим маршруты для получения кода аутентификации из redirect_uri нашего подключенного приложения, которое мы создали на предыдущем шаге.

Прежде чем создавать маршруты, давайте установим наши ключи SalesForce как переменные среды.

# Salesforce
process.env.CLIENT_ID='your_consumer_key'
process.env.CLIENT_SECRET_ID='your_consumer_secret'
process.env.REDIRECT_URI='getAccessToken' //

Пришло время создать наш первый маршрут, который будет перенаправлять на страницу входа в SalesForce OAuth.

app.get('/oauth2/auth', function(req, res) {
  const oauth2 = new jsforce.OAuth2({
    clientId: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET_ID,
    redirectUri: `${req.protocol}://${req.get('host')}/${process.env.REDIRECT_URI}`
  });
  res.redirect(oauth2.getAuthorizationUrl({}));
});

С этого момента Salesforce займется всем. Если пользователь авторизует наше подключенное приложение, оно перенаправит пользователя на страницу, указанную в URI перенаправления, которым в моем случае является «http: // localhost: 3000 / getAccessToken.

Давайте создадим маршрут getAccessToken, извлечем запрос кода из URL и получим токен доступа от salesforce.

app.get('/getAccessToken', function(req,res) {
  const oauth2 = new jsforce.OAuth2({
    clientId: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET_ID,
    redirectUri: `${req.protocol}://${req.get('host')}/${process.env.REDIRECT_URI}`
  });
  const conn = new jsforce.Connection({ oauth2 : oauth2 });
  conn.authorize(req.query.code, function(err, userInfo) {
    if (err) {
      return console.error(err);
    }
    console.log(conn.accessToken, conn.instanceUrl); // access token via oauth2
  });
});

Получить данные через OAuth2

Ниже я вношу некоторые изменения в тот же маршрут, чтобы использовать токен доступа для получения сведений о пользователе.

app.get('/getAccessToken', function(req,res) {
  const oauth2 = new jsforce.OAuth2({
    clientId: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET_ID,
    redirectUri: `${req.protocol}://${req.get('host')}/${process.env.REDIRECT_URI}`
  });
  const conn = new jsforce.Connection({ oauth2 : oauth2 });
  conn.authorize(req.query.code, function(err, userInfo) {
    if (err) {
      return console.error(err);
    }
    const conn2 = new jsforce.Connection({
      instanceUrl : conn.instanceUrl,
      accessToken : conn.accessToken
    });
    conn2.identity(function(err, res) {
      if (err) { return console.error(err); }
      console.log("user ID: " + res.user_id);
      console.log("organization ID: " + res.organization_id);
      console.log("username: " + res.username);
      console.log("display name: " + res.display_name);
    });
  });
});

Всего этими двумя путями вы достигли:

1. SalesForce OAuth с использованием Nodejs (как я и обещал в первой строке этого поста)
2. Получение данных с сервера salesforce с помощью токена доступа
3. Безопасный вход пользователя без сохранения его учетных данных

Я очень рекомендую прочитать эту документацию jsforce, которая мне очень помогла.

Я надеюсь, что вы нашли этот пост полезным, и, пожалуйста, дайте мне знать, если у вас возникнут какие-либо вопросы или вопросы. Если вам понравился этот пост, вы можете похлопать по нему или подписаться на меня в Medium, чтобы увидеть мои последние сообщения, или в Twitter.