Node.js 如何正确发送oauth 1.0请求以验证nodejs的凭据

Node.js 如何正确发送oauth 1.0请求以验证nodejs的凭据,node.js,oauth,twitter-oauth,Node.js,Oauth,Twitter Oauth,我有一个问题,我正试图调试,我会感谢一些帮助 curl命令中的oauthToken变量和oauth_令牌以及使用者密钥是相同的 此curl命令可用于: curl --get 'https://api.twitter.com/1.1/account/verify_crn: OAuth oauth_consumer_key="dv5trHvHDrAjIM87Z3KGtJrq5", oauth_nonce="7aec4b5b37ab420d44717387e2f889be", oauth_signat

我有一个问题,我正试图调试,我会感谢一些帮助

curl命令中的oauthToken变量和oauth_令牌以及使用者密钥是相同的

此curl命令可用于:

curl --get 'https://api.twitter.com/1.1/account/verify_crn: OAuth oauth_consumer_key="dv5trHvHDrAjIM87Z3KGtJrq5", oauth_nonce="7aec4b5b37ab420d44717387e2f889be", oauth_signature="qm4i0jGOPbbmYkaOFCoJhOfgcd4%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1443690396", oauth_token="71611055-pzDi5UJQXKzdP4kBLceLLwuzel8DKiRjNivlmkCuA", oauth_version="1.0"' --verbose
以下两个没有,并且它们应该具有相同的参数。他们回来了

401-{“错误”:[{“代码”:32,“消息”:“无法验证您的身份。”}

第一次尝试是与

第二次尝试是与

如中所述,您必须提供4个必需的OAuth参数:

request({
  oauth: {
    consumer_key: '...',
    consumer_secret: '...',
    token: '...',
    token_secret: '...'
  }
})
您可以从OAuth应用程序的设置页面获取
consumer\u密钥
consumer\u秘密
。可以通过执行OAuth流来获取用户的
token
token\u秘密


您可以使用获取用户的凭据。您可以查看用于Twitter的OAuth流的外观。

您不需要验证凭据的机密。有一个演示,您可以从官方Twitter页面获得curl命令,该命令在我的命令提示符下运行。在第二个示例中,我使用的是r消费者和用户。您是否尝试过我的解决方案?我知道答案,因为它在我这边有效。机密用于计算签名。我强烈建议您使用request而不是node oauth。我将接受您的答案,我没有意识到机密用于计算签名,但不存在于curl命令中谢谢。第二个示例不起作用,因为twitter检索到的access_令牌具有以下形式的令牌:secret@consumer_key我没有去掉@如果你想知道OAuth规范是如何在请求中实现的,请检查一下(注意,在删除机密的地方,它们只用于签署请求)。
  const oauthToken=req.body.accessToken.split(':')[0];
  const oauthTokenSecret=req.body.accessToken.split(':')[1];
  console.log(oauthToken+" " + oauthTokenSecret);
  const oauth = new OAuth.OAuth(
    'https://api.twitter.com/oauth/request_token',
    'https://api.twitter.com/oauth/access_token',
    config.get('twitter.consumerKey'),
    config.get('twitter.consumerSecret'),
    '1.0A',
    null,
    'HMAC-SHA1'
  );

  oauth.get(
  'https://api.twitter.com/1.1/account/verify_credentials.json',
  oauthToken,
  oauthTokenSecret,
  function (e, data, res){
    if (e) console.error(e);
    console.log(require('util').inspect(data));
  });
request({
  oauth: {
    consumer_key: '...',
    consumer_secret: '...',
    token: '...',
    token_secret: '...'
  }
})