API POST to Salesforce с использованием Google Tag Manager и JSforce не работает? - PullRequest
0 голосов
/ 18 марта 2019

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

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

https://jsforce.github.io/start/#web-browser

<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/#access-token

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

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

    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 Ответ

0 голосов
/ 18 марта 2019

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

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

...