Created
September 9, 2015 04:35
-
-
Save joeartsea/a349168f8d3823fd8570 to your computer and use it in GitHub Desktop.
sample NCMB create signature-node
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var crypto = require("crypto"); | |
| var url = "https://mb.api.cloud.nifty.com/2013-09-01/login" | |
| + "?userName=" + process.env.USER_NAME | |
| + "&password=" + process.env.USER_PASS; | |
| var method = 'GET'; | |
| var signature = ""; | |
| var _applicationKey = process.env.NCMB_APP_KEY; | |
| var _timestamp = new Date().toISOString(); | |
| var _clientKey = process.env.NCMB_CLIENT_KEY; | |
| var _method = method; | |
| var _url = encodeURI(url); | |
| var _tmp = _url.substring(_url.lastIndexOf("//") + 2); | |
| var _fqdn = _tmp.substring(0, _tmp.indexOf("/")); | |
| var _position = _url.indexOf("?"); | |
| var _path = ""; | |
| var _data = {}; | |
| if(_position == -1) { | |
| _path = _url.substring(_url.lastIndexOf(_fqdn) + _fqdn.length ); | |
| } else { | |
| var _get_parameter= _url.substring(_position + 1); | |
| _path = _url.substring(_url.lastIndexOf(_fqdn) + _fqdn.length, _position); | |
| _tmp = _get_parameter.split("&"); | |
| for (var i = 0; i < _tmp.length; i++) { | |
| _position = _tmp[i].indexOf("="); | |
| _data[_tmp[i].substring(0 , _position)] = _tmp[i].substring(_position + 1); | |
| } | |
| } | |
| _data["SignatureMethod"] = "HmacSHA256"; | |
| _data["SignatureVersion"] = "2"; | |
| _data["X-NCMB-Application-Key"] = _applicationKey; | |
| _data["X-NCMB-Timestamp"] = _timestamp; | |
| var _sorted_data = {}; | |
| var keys = []; | |
| var k, i, len; | |
| for (k in _data) { | |
| if (_data.hasOwnProperty(k)) { | |
| keys.push(k); | |
| } | |
| } | |
| keys.sort(); | |
| len = keys.length; | |
| for (i = 0; i < len; i++) { | |
| k = keys[i]; | |
| _sorted_data[k] = _data[k]; | |
| } | |
| var parameterString = ""; | |
| for (k in _sorted_data) { | |
| if (_sorted_data.hasOwnProperty(k)) { | |
| if (parameterString != "") { | |
| parameterString += "&"; | |
| }; | |
| parameterString = parameterString + k + "=" + _sorted_data[k]; | |
| } | |
| } | |
| var forEncodeString = _method + "\n" + _fqdn + "\n" + _path + "\n" + parameterString; | |
| var signature = crypto.createHmac("SHA256", _clientKey).update(forEncodeString).digest('base64'); | |
| console.log(signature); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment