cool sina oauth node.js
2012-04-19 09:19
204 查看
var express = require('express');var sys = require('sys');var oauth = require('oauth'); var app = express.createServer(); var config = require('./config') function consumer() { return new oauth.OAuth( "http://api.t.sina.com.cn/oauth/request_token", "http://api.t.sina.com.cn/oauth/access_token", config.sina.key, config.sina.secret, "1.0", "http://localhost:9999/sessions/callback", "HMAC-SHA1"); } app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.session({ secret: "string" }));}); app.dynamicHelpers({ session: function(req, res){ return req.session; }}); app.get('/', function(req, res){ res.send('Hello World');}); app.get('/sessions/connect', function(req, res){ consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){ console.log(error) if (error) { res.send("Error getting OAuth request token : " + sys.inspect(error), 500); } else { req.session.oauthRequestToken = oauthToken; req.session.oauthRequestTokenSecret = oauthTokenSecret; res.redirect("https://api.t.sina.com.cn/oauth/authorize?oauth_callback=http://localhost:9999/sessions/callback&oauth_token="+req.session.oauthRequestToken); } });}); app.get('/sessions/callback', function(req, res){ sys.puts(">>"+req.session.oauthRequestToken); sys.puts(">>"+req.session.oauthRequestTokenSecret); sys.puts(">>"+req.query.oauth_verifier); consumer().getOAuthAccessToken(req.session.oauthRequestToken, req.session.oauthRequestTokenSecret, req.query.oauth_verifier, function(error, oauthAccessToken, oauthAccessTokenSecret, results) { sys.puts("error >> "+error); sys.puts("oauthAccessToken >> "+oauthAccessToken); sys.puts("oauthAccessTokenSecret >> "+oauthAccessTokenSecret); sys.puts("results >> "+sys.inspect(results)); if (error) { res.send("Error getting OAuth access token : " + sys.inspect(error) + "["+oauthAccessToken+"]"+ "["+oauthAccessTokenSecret+"]"+ "["+sys.inspect(results)+"]", 500); } else { req.session.oauthAccessToken = oauthAccessToken; req.session.oauthAccessTokenSecret = oauthAccessTokenSecret; // Right here is where we would write out some nice user stuff consumer().get("http://api.t.sina.com.cn/account/verify_credentials.json", req.session.oauthAccessToken, req.session.oauthAccessTokenSecret, function (error, data, response) { data = JSON.parse(data) if (error) { res.send("Error getting twitter screen name : " + sys.inspect(error), 500); } else { console.log(sys.inspect(data)) req.session.sinaScreenName = data["screen_name"]; res.send('You are signed in: ' + req.session.sinaScreenName) } }); } });}); app.listen(parseInt(process.env.PORT || 9999)); 转自:https://gist.github.com/1306905
相关文章推荐
- 第6章-在Node.js应用中使用session和OAuth进行用户认证和授权
- [Cool Node.js] 题记
- [Cool Node.js] Node.js简介
- node.js sina 盘口实时报价
- oauth node.js 包
- Node.js项目实战-构建可扩展的Web应用(第一版): 6 在Node.js应用中使用session和OAuth进行用户认证和授权
- [Node.js] OAuth 2 和 passport框架
- Node.JS, Mongoose和Jade搭建OAuth2服务器 (一)
- node.js调用Chrome浏览器打开链接地址的方法
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.4.自定义静态方法和实例方法
- 简单谈谈node.js 版本控制 nvm和 n
- Node.js入门到精通(3)使用supervisor工具
- Node.js在windows平台的安装
- Node.js 简单学习
- Nodejs+Express创建HTTPS服务器
- Node.js读写中文内容文件操作
- 【node.js】安装express过程中测试报错:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- Node.js与PHP、Python的字符处理性能对比
- 为什么 Node.js 的异步 IO 具有非常好的性能
- 理解 Node.js 事件驱动机制的原理