0
我正试图在视频聊天应用程序中使用令牌(具有特定格式的部分随机基64编码字符串)。为了做到这一点,我在后端使用了Parse Cloud Code。我基本上部署了一个运行我的服务器端脚本的.js文件。我现在的代码如下。我得到错误代码141:“未捕获的ReferenceError:文档未定义”,另一个错误说'$'未定义。我怀疑我正在做的事情包括jQuery错误 - 可能是非常不好的事情。有任何想法吗?在.js函数中包含JavaScript/jQuery库
Parse.Cloud.define("generateToken", function(request, response) {
var script1 = document.createElement('script');
script1.src = 'http://code.jquery.com/jquery-1.8.3.min.js';
script1.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(script1);
var script2 = document.createElement('script');
script2.src = 'https://raw.github.com/carlo/jquery-base64/master/ jquery.base64.min.js';
script2.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(script2);
var script3 = document.createElement('script');
script3.src = 'http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js';
script3.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(script3);
var secondsInDay = 86400;
// Credentials - leaving these out for security purposes
var apiKey = <apiKey>;
var secret = <secret>;
var sessionId = request.params.sid;
// Token Params
var timeNow = Math.floor(Date.now()/1000);
var expire = timeNow+secondsInDay;
var role = "publisher";
var data = "whatever";
// Calculation
data = escape(data);
var rand = Math.floor(Math.random()*999999);
var dataString = "session_id="+sessionId+"&create_time="+timeNow+"&expire_time="+expire+"&role="+role+"&connection_data="+data+"&nonce="+rand;
// Encryption
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA1, secret);
hmac.update(dataString);
hash = hmac.finalize();
preCoded = "partner_id="+apiKey+"&sig="+hash+":"+dataString;
token = "T1=="+$.base64.encode(preCoded);
// Token Achieved. The End
response.success(token);
});
我很确定* Cloud Code *不能在DOM上运行。它基本上是使用JavaScript而不是“常用”语言的服务器端脚本。 – dualed
“在未在浏览器中执行代码时,不应该发生”未定义文档“。你到底在哪里? – Bergi
你似乎异步并行地加载脚本,而不是检查任何要以正确的顺序加载或加载的东西。可能这是你的“jQuery未定义”错误源于 – Bergi