从Twitter oAuth API请求令牌时出现215错误

时间:2018-07-19 07:47:04

标签: node.js twitter twitter-oauth

我正在尝试在NodeJS应用中实施Twitter登录。

根据Twitter上的documentation,我需要通过POST请求将以下参数传递给此url。 URL:

https://api.twitter.com/oauth/request_token

参数:

 oauth_nonce=, 
 oauth_signature=, 
 oauth_callback="http%3A%2F%2Fmyapp.com%3A3005%2Ftwitter%2Fprocess_callback", 
 oauth_signature_method="HMAC-SHA1",       
 oauth_timestamp="currentTimestamp", 
 oauth_consumer_key=“myKEY”, 
 oauth_version="1.0"

我正在为oauth_nonce参数传递一个随机字符串。我不清楚如何创建oauth_signature

每当我发出POST请求时,由于我猜不正确的oauth_nonceoauth_signature值,我总是收到215错误。

在NodeJS中发出请求时,如何生成oauth_nonceoauth_signature值。

4 个答案:

答案 0 :(得分:3)

这些参数需要在您的授权标头中传递:

OAuth oauth_nonce="K7ny27JTpKVsTgdyLdDfmQQWVLERj2zAK5BslRsqyw", 
oauth_callback="http%3A%2F%2Fmyapp.com%3A3005%2Ftwitter%2Fprocess_callback", 
oauth_signature_method="HMAC-SHA1", 
oauth_timestamp="1300228849", 
oauth_consumer_key="OqEqJeafRSF11jBMStrZz", 
oauth_signature="Pc%2BMLdv028fxCErFyi8KXFM%2BddU%3D", 
oauth_version="1.0"

但是在此之前,您需要获取一个签名,然后将为您提供上面的所有参数。选中the documentation here

建议使用passport之类的第三方库,如果需要的话,可以大大简化此过程。

答案 1 :(得分:1)

回答您的问题:

  

在NodeJS中发出请求时,如何生成oauth_nonce和oauth_signature值。

浏览这些帖子将对您Creating a signatureHow to generate an OAuth nonce有所帮助。

如果使用得当,Twitter具有很大的意义。我看过一些对我周围的人很有用的教程,我觉得也许您可能想检查Node Authentication: TwitterImplementing Sign in with Twitter for Node.js

或者您可能要检查passportjs

您将必须通过运行以下命令将其安装在项目中: npm install passport-twitter

配置

const passport = require('passport')
  , TwitterStrategy = require('passport-twitter').Strategy;

passport.use(new TwitterStrategy({
    consumerKey: TWITTER_CONSUMER_KEY,
    consumerSecret: TWITTER_CONSUMER_SECRET,
    callbackURL: "http://www.example.com/auth/twitter/callback"
  },
  function(token, tokenSecret, profile, done) {
    User.findOrCreate(..., function(err, user) {
      if (err) { return done(err); }
      done(null, user);
    });
  }
));

Github回购可能对您很有帮助。

如果您使用的是reactjs,则此(npm i react-twitter-auth)也可能对您有用。

答案 2 :(得分:0)

无法发表评论,这就是为什么在这里回答。 docu表示,oauth_nonce

  

是您的应用程序应为每个唯一请求生成的唯一令牌

就像加密的盐一样。您可以在同一链接下找到oauth_signaturehere描述了如何生成它。

答案 3 :(得分:0)

最后我可以使用this

获取访问令牌。