首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Node.js、Mongo 和 D3 创建一个工具来分析 Twitter 用户信息(5)

使用 Node.js、Mongo 和 D3 创建一个工具来分析 Twitter 用户信息(5)

第 4 步.                连接到 Mongo在发出 Twitter API 请求时,Node 服务器代码必须能够包含用户的 Twitter 私钥。Twitter                请求中同时需要公钥和私钥。
我使用公钥作为查找私钥的数据库句柄。我希望我的 ProfileWords                应用程序能够同时支持多个人;因此,它需要能够代表多个用户接受并创建请求,每个用户拥有她或他自己的 Twitter 帐户。
当用户执行身份验证时,Twitter                会为该用户提供一个私钥。该密钥存储在数据库中。然后在用户发出请求时,应用程序会针对公钥部分查找存储的私钥,公钥保存在 Web                浏览器中并在请求中发送。
以下是身份验证序列。
Mongo 使用了一个连接池。我的 Node 应用程序在启动时会创建一个连接:
1
2
3
4
5
6
7
8
9
10
11
mongo = {   "hostname":"127.0.0.1",
                "port":27017,
                "username":"",
                "password":"",
                "name":"",
                "db":"db",
                "url":"mongodb://127.0.0.1:27017/db" };
                 
path = mongo.url;

MongoClient.connect( path, function(err, followersDatabase) {




请注意,我的整个 Node 应用程序都在此连接中运行,在运行应用程序之后,我可使用 followersDatabase                表达式引用该数据库。
在许多 Mongo 示例中,每次发出请求时都会创建一个全新的连接。我了解到此方法在部署到 PaaS 运行时时很快会发生故障。Mongo                文档(我在其中了解了 MongoClient.connect)建议使用一个连接的会话来运行,就像我所做的那样。
我创建了   作为参考来帮助显示一些 Mongo                基本信息,但您还可以学习如何在 app.js 中使用它。
例如,以下代码将会查找秘密令牌,以便该代码可以向 Twitter 发送请求。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
app.param('id', function(req, res, next, id){   

        res.setHeader( 'Content-Type', 'application/json' );

        if( req.headers['oauth_token'] ){

            var token = req.headers['oauth_token'];
            var cloudType = req.headers['cloudtype'];
            
            var collection = followersDatabase.collection( 'tokens' );

            collection.findOne( { 'oauth_access_token': token }, function( err, item ) {                 

                var config = {
                    consumer_key:         'YOUR CONSUMER KEY',
                    consumer_secret:      'YOUR CONSUMER SECRET',
                    access_token_secret: item.oauth_access_token_secret,
                    access_token: item.oauth_access_token
                }

                console.log( 'account: ' + item.name );

                retrieveProfiles( config, res, id, cloudType );   

                var requests = followersDatabase.collection( 'requests' );

                var date = new Date();

                var request = ( { 'twitterId':id, 'timeStamp': date, 'account': item.name } );

                requests.insert( request, {safe:true}, errorHandler );

            });
        }

        next();
    });

    app.get( "/words/:id", function(req, res ){ } );




您有许多机会将分析数据保存在数据库中。例如,您可以按照用户统计每个请求,或者可以记录词汇云的颜色主题选择。该应用程序的当前迭代使用数据库来管理多个用户的令牌访问。
在这里,我介绍了使用 Node 和 express 执行的后续步骤,比如使用 Mongo 和使用身份验证。相同的要素也可以用在其他社交媒体                mashup 中。这些构建块可能对您很有帮助。
我花费了一段时间才积累了这些知识,但这个过程(解决问题并学习)很过瘾。node 包会对您很有帮助,会提供了一个不错的基础。
返回列表