Как подключиться к Salesforce с помощью Postman

В этой статье мы поговорим об отправке запросов от находящегося за пределами Salesforce клиента к web сервисам Apex в Salesforce. Для этого будем использовать Postman.

Начнем с создания Connected App в Salesforce, и пошагово подключим Salesforce к Postman, используя REST API. В качестве примера извлечем и создадим записи объекта в Salesforce с помощью Postman.

Salesforce Connected App

Salesforce предоставляет Connected App для подключения к платформе с помощью любого другого приложения.

Connected App — это framework, который позволяет внешнему приложению интегрироваться с Salesforce с помощью API и стандартных протоколов.

Postman

Postman — это инструмент для тестирования API-интерфейсов с использованием HTTP-запросов, который помогает создавать, тестировать и изменять API. Он имеет возможность делать различные типы HTTP-запросов (GET, POST, PUT, PATCH).

Создание Connected App

В Setup в поиск вводим - Apps, далее выбираем пункт - App Manager.

В открывшемся меню нажимаем кнопку - New Connected App

В открывшемся окне, в секции Basic Information, заполняем обязательные поля

В секции API (Enable OAuth Settings):

  • включаем чекбокс Enable OAuth Settings, что позволит выбрать OAuth API (протокол, который разрешает безопасный обмен данными между приложениями посредством обмена токенами)
  • в поле Callback URL в нашем случае укажем любой URL (В зависимости от того, какой OAuth flow вы используете, URL обычно является тем, на который перенаправляется браузер пользователя после успешной авторизации)
  • поле Selected OAuth Scopes определяют разрешения для Сonnected app, которые предоставляются в виде токенов после авторизации приложения. Имя токена OAuth указано в скобках. В моем случае я выберу - Manage user data via APIs (api). Описание всех OAuth Scopes указано в документации - Link

Остальные настройки оставляем как есть и нажимаем кнопку Save. После нам нужно подождать до 10 минут пока Connected App подготовится.

По нажатию на кнопку Continue – мы попадаем на страницу Connected App.

Напротив кнопки Consumer Key and Secret нужно нажать - Manage Consumer Details, чтобы получить доступ к этим данным

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

После успешной верификации на странице появится Consumer Key и Consumer Secret.

Consumer Key - это ключ API,«логин», который поставщик услуг выдает потребителю (службе, которая хочет получить доступ к ресурсам пользователя у поставщика услуг). Этот ключ идентифицирует потребителя.

Consumer Secret - это «пароль» потребителя, который используется вместе с Consumer Key для запроса доступа (т. е. авторизации) к ресурсам пользователя у поставщика услуг.

На этом настройка на Salesforce организации окончена, далее перейдем в Postman.

Настройка Postman

Скачиваем и устанавливаем Postman. Теперь, когда у нас есть готовые учетные данные, давайте откроем Postman. Прежде чем мы сможем сделать callout нашего endpoint, нам нужно пройти аутентификацию и получить access token.

В открывшемся окне нужно выбрать request метод, ввести URL и 5 обязательных параметров для получения access token.

  • Введите URL согласно вашего типа организации:

Production URL: https://login.salesforce.com/services/oauth2/token

Sandbox URL: https://test.salesforce.com/services/oauth2/token

  • Request метод устанавливаем в POST

во вкладке Params заполняем нужные параметра

  1. grant_type = password
  2. client_id = Consumer Key
  3. client_secret = Consumer Secret
  4. username = Salesforce username
  5. password = Salesforce user password + security token

Пока вводим наш пароль от Salesforce Организации и в Postman нажимаем кнопку Send.

И получаем ошибку:

Чтобы это исправить, нам нужно получить security token и добавить его к параметру password без пробела.

Переходим в Salesforce, UsernameSettings.

Меню - Reset My Security Token.

Жмем кнопку Reset Security Token.

Получаем сообщение о том, что он отправлен на email Юзера:

Во входящем письме он будет указан:

Добавляем Security Token к паролю в Postman и снова нажимаем кнопку Send.

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

access_token — это токен, который выдается потребителю поставщиком услуг после того, как потребитель завершит авторизацию. Этот токен определяет права доступа потребителя к ресурсам конкретного пользователя. Каждый раз, когда потребитель хочет получить доступ к данным пользователя от этого поставщика услуг, потребитель включает токен доступа в запрос API к поставщику услуг.

Срок действия “access_token” составляет несколько часов, и в случае истечения срока его действия вам необходимо выполнить те же действия, чтобы получить новый токен доступа, поэтому лучше сохранить этот запрос.

Работа в Postman

Теперь, когда мы подключили Postman к Salesforce, попробуем получить запись по Id и затем создать запись. Для этого приведу пример раннее созданного Endpoint:

@RestResource(urlMapping=’/opportunity/*’)
global with sharing class OpportunityEndpoint {

@HttpGet
global static Opportunity getOpportunityById() {
    RestRequest request = RestContext.request;

    String opportunityId = request.requestURI.substring(request.requestURI.lastIndexOf('/')+1);
    
    Opportunity opportunity =  [
        SELECT Name, StageName, CloseDate, Account.Name, Type, LeadSource, RecordType.Name
        FROM Opportunity
        WHERE Id = :opportunityId
    ];
    
    return opportunity;
}

@HttpPost
global static String createOpportunities(Opportunity opportunity){
	insert opportunity;
    
    return 'Success';
}}

Для извлечения записи, откроем новую вкладку в Postman:

  • выбираем метод GET
  • URL должен выглядеть следующим образом с Id записи - https://“yourinstance”/services/apexrest/“Namespace if exist”/opportunity/0062o00000ztgucAAA
  • Во вкладке Authorisation - выбираем тип Bearer Token и вставлям “access_token” получивший раннее

Нажимаем кнопку Send и получаем результат:

Теперь создадим запись, для этого в новой вкладке:

  • выбираем метод POST
  • на вкладке Header указываем в столбце KEY - Content-Type, в столбце VALUE - application/json; charset=UTF-8
  • во вкладке Authorisation - выбираем тип Bearer Token и вставлям “access_token” получивший раннее
  • URL должен выглядеть следующим образом: https://“yourinstance”/services/apexrest/“Namespace if exist”/opportunity

  • На вкладке Body указываем с какими параметрами создать запись

Нажимаем Send и получаем результат, который возвращали в Apex методе @HttpPost createOpportunities()

Преимущества использования Salesforce REST API Postman

  1. Как и в примерах методов GET и POST, показанных выше, ко всем методам HTTP можно получить доступ с помощью пользовательского API через Postman. Это дает вам полный контроль над всеми HTTP-запросами.
  2. Нет ограничений на загрузку файлов, поскольку вы можете устанавливать headers и parameters и использовать любой content type, например binary, text, application и т. Д.
  3. Генерация code snippets для разных языков по вашим запросам возможна на Postman
  4. Вы можете создавать post execution скрипты с помощью JavaScript, которые можно использовать для установки переменных организации.
  5. Легко переключаться между несколькими средами
8 Вподобань

Дуже цікава річ.
На деяких DevOrg може постійно вилітати “error”:“invalid_grant”.
Рішення знайдено у ввімкненні Allow OAuth Username-Password Flows
image

1 Вподобання