API POST to Salesforce с использованием Google Tag Manager и JSforce не работает?

Я хочу использовать Менеджер тегов Google для отправки данных в нашу Salesforce org для определенных событий на нашем сайте (регистрация пользователей, конверсия и т. Д.). После некоторых исследований я понял, что JSforce будет самым простым способом для достижения этой цели. Я создал новое подключенное приложение в Salesforce, опробовал API Salesforce с помощью Postman и успешно сумел создать новую учетную запись пользователя через API. Затем я перешел, чтобы попытаться добиться того же в Google Tag Manager. Я прочитал документы JSforce и попытался реализовать все. Но после нескольких часов поиска неисправностей и поиска в Google я не могу заставить его работать.

Вот мой текущий код, который находится в "теге" в Google Tag Manager, который срабатывает на всех страницах (только для тестирования):

https://jsforce.github.io/start/

<script src="//cdnjs.cloudflare.com/ajax/libs/jsforce/1.9.1/jsforce.min.js"></script>
<script>
    jsforce.browser.init({
      clientId: '<MYCLIENTID>',
      redirectUri: 'https://cuttersclub.com'
    });

https://jsforce.github.io/document/

    var jsforce = require('jsforce');
    var conn = new jsforce.Connection({
      instanceUrl : 'https://um5.salesforce.com',
      accessToken : '<MYACCESSTOKEN>',
    });

https://jsforce.github.io/document/

    conn.sobject("Account").create({ Name : 'My Account #1' }, function(err, ret) {
      if (err || !ret.success) { return console.error(err, ret); }
      console.log("Created record id : " + ret.id);
    });
</script>

Я получаю эту ошибку в консоли браузера:

Uncaught ReferenceError: require is not defined

РЕДАКТИРОВАТЬ: удаление var jsforce = require('jsforce'); Решил эту проблему и аккаунты создаются в Salesforce. Но теперь я получаю следующую ошибку в консоли браузера:

Access to XMLHttpRequest at '<URL>' from origin '<CALLBACKURL>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Как упоминалось в документации по JSforce, я думаю, что это может быть связано с прокси-серверами: https://github.com/jsforce/jsforce-ajax-proxy

1 ответ

Решение

Я не очень много знаю о salesforce, но "require" - это что-то из node.js, а не функция, реализованная в браузере.

Если я правильно понимаю документацию, то для проекта браузера должно быть достаточно вызвать скрипт jsforce через тег script. После этого вам не нужно каким-либо образом "требовать" файлы, так как скрипт jsforce уже содержит все, что вам нужно. Так что все будет хорошо, если вы просто удалите ошибочные строки (т.е. все ссылки на "require('jsforce');").

Другие вопросы по тегам