OAuth nonce value
OAuth nonce value
我正在使用FatSecret REST API
我使用OAuthSimple javascript库来生成签名的url。这是我的代码-
params['oauth_timestamp'] = Math.floor(new Date().getTime()/1000);
params['oauth_nonce'] = '1234';
params['oauth_version'] = '1.0';
var paramStr = '';
for(var key in params){
paramStr += key+"="+params[key]+"&";
}
paramStr = paramStr.substring(0,paramStr.length-1);
var oauth = OAuthSimple();
oauth.setAction('GET');
var o = oauth.sign(
{
path:this.requestURL,
parameters: paramStr,
signatures:{
api_key:this.apiKey,
shared_secret:this.sharedSecret,
access_token: this.accessToken,
access_secret: this.accessSecret
}
});
console.log(o.signed_url);
return o.signed_url;
params是一个关联数组,包含此调用的所有非oauth相关参数。当我使用这个签名的url时,我会得到一个"无效/已使用的nonce"
OAuth测试工具使用相同的OAuthSimple库,如果我输入所有相同的参数(包括时间戳),它会生成完全相同的url。
唯一的区别是测试工具生成的url可以工作,并从服务器给我完整的响应。我的代码生成的url没有。
我尝试了各种nonce值,包括发送时间戳的MD5,但我得到了相同的错误。我现在使用1234的原因是测试工具默认使用1234,这似乎很有效。
感谢您的帮助。提前谢谢。
用当前浏览器上可用的东西更新@Saravanan的答案:
function genNonce() {
const charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._~'
const result = [];
window.crypto.getRandomValues(new Uint8Array(32)).forEach(c =>
result.push(charset[c % charset.length]));
return result.join('');
}
console.info(genNonce());
根据twitter文档的nonce值:
此请求的值是通过base64编码32字节的随机数据生成的,并去掉所有非单词字符产生相对随机的字母数字字符串的方法应该在这里没事。
基于以上注意事项,我每次发送请求时都使用以下javascript代码生成nonce值:
var nonceLen = 32;
return crypto.randomBytes(Math.ceil(nonceLen * 3 / 4))
.toString('base64') // convert to base64 format
.slice(0, nonceLen) // return required number of characters
.replace(/'+/g, '0') // replace '+' with '0'
.replace(/'//g, '0'); // replace '/' with '0'
如果有效的话,试试这个!
试试这个
每次都是这样
var nonce=Math.random().toString(36).replace(/[^a-z]/,'').substr(2);
相关文章:
- 在ember/handlers中使用value和valueBinding有什么区别
- 需要url导航从DropDown Value onClick按钮传递url变量
- 用Javascript在下拉列表中选择VALUE选项
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- HTML Value finding
- Javascript GetElementByID has no value
- 如何获取文本框组的值,并使用jquery将它们放入(key:Value)数组中
- .value返回字符串,直到我将其保存到变量
- JavaScript check value
- 使用javascript和css选择器获取value属性的内容
- HTML SELECT-使用JavaScript按VALUE更改所选选项
- 如果URL为(value),则使用css类
- 将php值传递给点击(getFunction(this.value))问题
- onchange选择get value并执行查询,然后在同一页面上显示结果
- textbox.value在javascript中不起作用
- php Matching javascript value
- 使用lodash从对象数组中获取uniq[key,value]
- 显示多个具有相同源javascript(map(key,value))数据的图表
- Jquery :gt(value) issue
- OAuth nonce value