使用Node.js,Express,Twit和Passport-twitter代表另一个用户发布到Twitter

问题描述 投票:0回答:1

[使用Twitter API,我试图代表Twitter用户发布推文。

我正在使用节点以及passport-twittertwit模块。

某些资源:

成功地按照上面的教程进行了护照验证。

我也成功地使用twit发布了我的Twitter开发者帐户。

但是,我很难将这两件事结合起来;尝试在代表另一个用户上发布到Twitter。为此,我需要获取用户的访问令牌和访问令牌密钥。然后,我需要使用该信息向Twitter API发出发布请求。

我不确定将发帖请求放在护照特警代码中的何处。我尝试将其放在第二个路由中,这是Twitter用户登录后将其重定向到的URL。

   app.get('/twitter/login', passport.authenticate('twitter'))

   app.get('/twitter/return', passport.authenticate('twitter', {
       failureRedirect: '/'
   }), function(req, res) {
     //Post using twit
     //grab access token and access token secret from the request query
       const access_token = req.query.oauth_token;
       const access_token_secret = req.query.oauth_verifier;

       //set the configurations with the access token and access token secret that we just got
       const config = {
         consumer_key:         <consumer key here>,
         consumer_secret:      <consumer secret here>,
         access_token, 
         access_token_secret,
         timeout_ms:           60*1000,  
         strictSSL:            true
       }

       //pass in the configurations
       var T = new Twit(config);

       //post
       T.post('statuses/update', { status: 'hello world!' }, function(err, data, response) {
         if (err)console.log("oops, didn't tweet: ", err.message);
       })

       res.redirect('/');
   })

但是我收到一个错误:Invalid or expired token.

我希望它能正常工作,因为身份验证有效。

这是我第一次使用OAuth,所以也许我误会了这一切。

我应该在哪里发布请求?

UPDATE:

我尝试使用开发者帐户的访问令牌和密码发布到开发者帐户。有效。这使我相信用户的访问令牌和密码有问题。

我想我部分知道会发生什么。

我假设在请求查询对象中找到的属性oauth_verifier是访问令牌密钥。

const access_token_secret = req.query.oauth_verifier;

但是现在我不认为oauth_verifier与访问令牌密码相同。 oauth_verifier的字符少于我的开发帐户的访问令牌密钥。因此,似乎数据类型是不同的。

但是现在我想弄清楚访问令牌的秘密在哪里?请求查询对象(req.query)中只有两个属性;

  • oauth_token

  • oauth_verifier

  • 用户的访问令牌密码在哪里?

[使用Twitter API,我正在尝试代表Twitter用户发布推文。我正在使用node以及passport-twitter和twit模块。一些资源:我按照此视频教程NodeJS和...

node.js authentication twitter oauth twitter-oauth
1个回答
0
投票

我解决了我的问题。一直在passport-twitter的文档中。老兄,我在这个问题上花了好几天。

© www.soinside.com 2019 - 2024. All rights reserved.