Universal code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
function enableDisqus(config, sso_config) { console.log("is disqus already loaded: " + enableDisqus.loaded); if (enableDisqus.loaded) { DISQUS.reset({ reload: true, config: function () { this.page.identifier = config.identifier; this.page.url = config.url; this.page.title = config.title; } }); console.log('disqus reset', config.identifier, config.url); } else { console.log('disqus not loaded'); var body = "var disqus_shortname = \"" + config.shortname + "\";\n" + "var disqus_title = \"" + config.title + "\";\n" + "var disqus_identifier = \"" + config.identifier + "\";\n" + "var disqus_url = \"" + config.url + "\";\n"; if (config.developer) { body += "var disqus_developer = 1;\n" } appendScriptTagWithBody(body); (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); if (sso_config) { var remote_auth_s3 = sso_config.message + " " + sso_config.sig + " " + sso_config.timestamp; var body = "var disqus_config = function() {\n" + " this.page.remote_auth_s3 = \"" + remote_auth_s3 + "\";\n" + " this.page.api_key = \"" + sso_config.api_key + "\";\n" + " this.sso = {\n" + " name: 'SampleNews',\n" + " button: 'http://example.com/images/logo.png',\n" + " icon: 'http://example.com/images/favicon-96x96.png',\n" + " url: 'http://example.com/signin',\n" + " logout: 'http://example.com/logout',\n" + " width: '800',\n" + " height: '400'\n" + " };\n" + "};\n" appendScriptTagWithBody(body) } enableDisqus.loaded = true; } } function appendScriptTagWithBody(body) { var dso = document.createElement("script"); dso.type = "text/javascript"; dso.async = true; dso.text = body; console.log(body); document.getElementsByTagName('body')[0].appendChild(dso); } |
When your page content changes and you need to load new comments:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
//load the comments if (isLoggedIn()) { //prepare SSO var disqusData = { id: Parse.User.current().getSessionToken(), username: Parse.User.current().getUsername(), email: Parse.User.current().getEmail() }; var disqusStr = JSON.stringify(disqusData); var disqussso_timestamp = Math.round(+new Date() / 1000); var disqussso_message = Base64.encode(disqusStr); var disqussso_result = CryptoJS.HmacSHA1(disqussso_message + " " + disqussso_timestamp, "your disqus api"); var disqussso_hexsig = CryptoJS.enc.Hex.stringify(disqussso_result); } enableDisqus( { shortname: "your_shortname", title: "your product name", identifier: 'your-' + productId, url: "product page url" }, { api_key: "your_disqus_api_key", message: disqussso_message, sig: disqussso_hexsig, timestamp: disqussso_timestamp } ); |
Dependancies:
- http://code.google.com/p/crypto-js
- http://stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript
Did you find this post useful?
Tip me some bitcoin: