我想使用谷歌标签管理器来发送数据到我们的Salesforce组织在我们的网站上的某些事件(用户注册,转换等)。经过一些研究,我意识到JSforce将是实现这一目标的最简单的方法。我在Salesforce中创建了一个新的连接应用程序,使用Postman试用了Salesforce API,并成功地通过该API创建了一个新的用户帐户。然后,我继续尝试在Google Tag Manager中实现相同的功能。我读了JSforce的docs,并尝试实现所有的东西。但是,经过几个小时的故障排除和谷歌搜索,我似乎无法让它工作。
这是我当前的代码,它在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
发布于 2019-03-18 16:13:55
我不太了解salesforce,但"require“是来自node.js的东西,而不是在浏览器中实现的功能。
如果我正确理解了文档,那么对于浏览器项目,通过script标记调用jsforce脚本就足够了。在此之后,您不再需要任何方法来“要求”文件,因为jsforce脚本已经包含了您需要的所有内容。因此,如果您只删除有问题的行(即所有对“require(‘jsforce’);”的引用),则应该没问题。
https://stackoverflow.com/questions/55212167
复制相似问题