首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >避免对Twitter (node.js)进行多次验证

避免对Twitter (node.js)进行多次验证
EN

Stack Overflow用户
提问于 2014-05-23 11:46:16
回答 1查看 151关注 0票数 1

我正试图在node.js中创建一个基本的应用程序:( a)在twitter中跟踪一个关键字,并临时存储与该关键字相关的消息;( b)在足够多的消息积累之后,将其返回给用户。我在使用ntwitter库。

我已经在我的客户端和服务器端实现了一个基本的长轮询系统,但是我在验证方面遇到了一些困难。按照我当前设置它的方式,每次调用/api/streamfeed时,它都会验证用户,所以在检查流之前,可能每30秒一次(因为我有30多个超时计划)。我认为这会给我带来麻烦,因为我认为验证是有限的?有没有一种方法可以检查我是否被验证,而不需要点击Twitter的API (可能在第一次尝试之后存储一个布尔值)?

客户端:

代码语言:javascript
运行
复制
//upon receiving a response, poll again
function getStreamFeed() {
  console.log('calling getStreamFeed');
  $http.get('/api/streamfeed').success(function(data) {
    console.log(data)
    getStreamFeed();
  });
};

setTimeout(getStreamFeed, 1000);


Server side:
app.get('/api/streamfeed', function(req, res) {
    /* 
        ...
        polling code
        ...
    */

    twit.verifyCredentials(function(err, data) {
      if (err) res.send(404);
      twit.stream('statuses/filter', {
        track: 'justin bieber'
      }, function(stream) {
        stream.on('data', function(data) {
          console.log(data.text)
          messages.push(data.text);
        });

      })
    });
  });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-24 01:04:33

我会把证件寄回来然后再重发一次..。这可能是一个bool,或实际使用的凭据。这些不是你的私钥什么的,只有用户的。

也可以在标题和cookie中发送,并进行适当的散列等。

这只是简单地显示了一个应该工作的模式。

客户端:

代码语言:javascript
运行
复制
function getStreamFeed(credentials) {
    //upon receiving a response, poll again
    console.log('calling getStreamFeed');
    var url = '/api/streamfeed';
    if (credentials) {
        url += '&credentials=' + credentials;
    }
    $http
        .get(url)
        .success(function(data) {
            console.log(data)
            getStreamFeed(true);
        });
};

setTimeout(getStreamFeed, 1000);

服务器端:

代码语言:javascript
运行
复制
app.get('/api/streamfeed', function(req, res) {
    function twitStream () {
        twit.stream('statuses/filter', {track: 'justin bieber'}, function(stream) {
            stream.on('data', function(data) {
                console.log(data.text)
                messages.push(data.text);
            });
        }
    }
    var credentials = req.query.credentials;
    if (credentials) {
        twitStream()
    }
    twit.verifyCredentials(function(err, data) {
        if (err) res.send(404);
        twitStream()
    });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23828383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档