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');").