2012-12-18 47 views
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); 
}); 
+1

我很確定* Cloud Code *不能在DOM上運行。它基本上是使用JavaScript而不是「常用」語言的服務器端腳本。 – dualed

+0

「在未在瀏覽器中執行代碼時,不應該發生」未定義文檔「。你到底在哪裏? – Bergi

+0

你似乎異步並行地加載腳本,而不是檢查任何要以正確的順序加載或加載的東西。可能這是你的「jQuery未定義」錯誤源於 – Bergi

回答

0

「文檔未定義」通常是一個通常運行網絡工作者的傳說故事標誌。如果你想訪問文檔,不要使用webworker。這是因爲應該只有一個線程訪問文檔,以免造成衝突。