Javascript 授权OAuth 1.0生成OAuth_签名失败

Javascript 授权OAuth 1.0生成OAuth_签名失败,javascript,node.js,oauth,http-headers,netsuite,Javascript,Node.js,Oauth,Http Headers,Netsuite,我必须使用OAuth 1.0访问Netsuite API,我在PostMan上成功访问了它,那里的请求返回了有效数据 现在我想从NodeJS访问这些API 问题是,当我尝试生成oauth_签名时,我从未得到与postman相同的签名(通过使用与它相同的参数) 这是我的密码 var consumerSecret = '<consumer secret>' //Hide value var tokenSecret = '<token secret>' //Hide value

我必须使用OAuth 1.0访问Netsuite API,我在PostMan上成功访问了它,那里的请求返回了有效数据 现在我想从NodeJS访问这些API 问题是,当我尝试生成oauth_签名时,我从未得到与postman相同的签名(通过使用与它相同的参数) 这是我的密码

var consumerSecret = '<consumer secret>' //Hide value
var tokenSecret = '<token secret>' //Hide value
var base_url = '<base_url>' //Hide value
var method = 'GET'

//creating parameter
const oauth_nonce = uuid.v1(); 
const parameters = {
      oauth_consumer_key:"<consumer key>", //Hide value
      oauth_nonce: "UdvTLmlGI2L",
      oauth_signature_method:"HMAC-SHA256",
      oauth_timestamp: "1618937894",
      oauth_token : '<oauth_token>', //Hide value
      oauth_version:"1.0",
      realm:'<realm>'
}

//order paramter alphabetical order
let ordered = {};
Object.keys(parameters).sort().forEach(function(key) {
    ordered[key] = parameters[key];
});

//concatenate parameter and encode them
let encodedParameters = '';
for (k in ordered) {
  const encodedValue = escape(ordered[k]);
  const encodedKey = encodeURIComponent(k);
  if(encodedParameters === ''){
     encodedParameters +=     encodeURIComponent(`${encodedKey}=${encodedValue}`)
  }
  else{
   encodedParameters += encodeURIComponent(`&${encodedKey}=${encodedValue}`);
  }
}

//generating signature key
const encodedUrl = encodeURIComponent(base_url);
encodedParameters = encodeURIComponent(encodedParameters); // encodedParameters which we generated in last step.
const signature_base_string = `${method}&${encodedUrl}&${encodedParameters}`
const signing_key = `${consumerSecret}&${tokenSecret}`
const oauth_signature = crypto.createHmac("sha256", signing_key).update(signature_base_string).digest().toString('base64');
const encoded_oauth_signature = encodeURIComponent(oauth_signature);
console.log(encoded_oauth_signature)
var consumerSecret=''//隐藏值
var tokenSecret=''//隐藏值
var base_url=''//隐藏值
var方法='GET'
//创建参数
const oauth_nonce=uuid.v1();
常数参数={
oauth_使用者_键:“”,//隐藏值
oauth_nonce:“UdvTLmlGI2L”,
oauth_签名_方法:“HMAC-SHA256”,
oauth_时间戳:“1618937894”,
oauth_标记:“”,//隐藏值
oauth_版本:“1.0”,
领域:“”
}
//顺序参数字母顺序
设有序={};
Object.keys(参数).sort().forEach(函数(键){
有序[键]=参数[键];
});
//连接参数并对其进行编码
让encodedParameters='';
for(按顺序排列的k){
const encodedValue=转义(有序[k]);
const encodedKey=encodeURIComponent(k);
如果(encodedParameters==''){
encodedParameters+=encodeURIComponent(`${encodedKey}=${encodedValue}`)
}
否则{
encodedParameters+=encodeURIComponent(`&${encodedKey}=${encodedValue}`);
}
}
//生成签名密钥
const encodedUrl=encodeURIComponent(基本url);
encodedParameters=encodeURIComponent(encodedParameters);//编码我们在上一步中生成的参数。
常量签名_base_string=`${method}&${encodedUrl}&${encodedParameters}`
const signing_key=`${consumerSecret}&${tokenSecret}`
const oauth_signature=crypto.createHmac(“sha256”,signing_key).update(signature_base_string).digest().toString('base64');
const encoded_oauth_签名=encodeURIComponent(oauth_签名);
日志(编码的oauth签名)
有人能解释一下我做错了什么,以及我如何得到正确的oauth签名吗


谢谢

我使用的url不包含任何查询