Skip to content

Instantly share code, notes, and snippets.

@songz
Created December 6, 2012 05:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save songz/4221923 to your computer and use it in GitHub Desktop.
Save songz/4221923 to your computer and use it in GitHub Desktop.
Generating OpenTok Token in Javascript
<script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="https://raw.github.com/carlo/jquery-base64/master/jquery.base64.min.js" type="text/javascript"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js"></script>
<script type="text/javascript">
var secondsInDay = 86400;
// Credentials
var apiKey = '<apiKey>';
var secret = '<secret>';
var sessionId = '1_MX4xMTMzMTg5Mn4xMjcuMC4wLjF-U3VuIERlYyAwMiAwNjo0NTozMSBQU1QgMjAxMn4wLjQwMjY2OH4';
// Token Params
var timeNow = Math.floor(Date.now()/1000);
var expire = timeNow+secondsInDay;
var role = "publisher";
var data = "bob";
TB.setLogLevel(TB.DEBUG);
// 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
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment