注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

jiyinyiyong

/chenyong/, 1991, dreamer, coder

 
 
 

日志

 
 
关于我

http://tiye.me

文章分类
网易考拉推荐

BrowserID 尝试 Nodejs  

2012-01-04 23:33:43|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
晚上就试了这个, 只是能获取登录信息而已, session 和注销没尝试
然后只是本地成功, NAE 上 socket.io 蹊跷地依赖 child_process, 不过搞定了
这里可以测试 http://browserid.cnodejs.net/
先帖代码, server.coffee
fs = require 'fs'
request = require 'request'
handler = (req, res) ->
    fs.readFile 'public/login.html', (err, data) ->
        console.log err
        res.writeHead 200
        res.end data
app = (require 'http').createServer handler
app.listen 8000
io = (require 'socket.io').listen app
io.set 'log level', 1
io.sockets.on 'connection', (socket) ->
    socket.on 'first', () ->
        socket.emit 'first', 'OK'
    socket.on 'assertion', (data) ->
        options =
            'uri': 'https://browserid.org/verify'
            'method': 'post'
            'json':
                'assertion': data
                'audience': 'http://localhost:8000'
        request options, (error, response, body) ->
            console.log response.statusCode
            socket.emit 'login', (body)
然后 login.jade 文件
html
    head
        script(src='/socket.io/socket.io.js')
        script(src='https://browserid.org/include.js')
        script(src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js')
        :coffeescript
            window.onload = () ->
                socket = io.connect window.location.hostname
                socket.on 'first', (data) ->
                    console.log data
                ($ '#login').click () ->
                    navigator.id.get ((assertion) ->
                        socket.emit 'assertion', assertion),
                        {allowPersistent: true}
                socket.on 'login', (data) ->
                    navigator.id.logout()
                    ($ '#login').remove()
                    ($ 'body').append '<p id="logout">logout</p>'
                    ($ '#logout').click () ->
                        ($ '#logout').remove()
                        ($ 'body').append '<image src="https://browserid.org/i/sign_in_red.png" id="login"/>'
                        ($ '#login').click () ->
                            navigator.id.get (assertion) ->
                                socket.emit 'assertion', assertion
    body
        image#login(src='https://browserid.org/i/sign_in_red.png')
最后从 server 返回的结果
{ status: 'okay',
  email: 'jiyinyiyong@gmail.com',
  audience: 'http://localhost:8000',
  expires: 1325688385600,
  issuer: 'browserid.org' }
参考了下面这些链接
http://stackoverflow.com/questions/8675688/send-content-type-application-json-post-with-node-js
http://vsean.net/blog/post/95#comment
https://github.com/mikeal/request
https://github.com/mozilla/browserid/wiki/How-to-Use-BrowserID-on-Your-Site
然后官方文档的其他目录提到 node.js 有模块可用
https://github.com/mozilla/browserid/wiki
另外过程中遇到问题
'json' 的 'audience' 部分, 要和当前 hostname和端口一致, 发现本地居然也可以
我是能力限制用了 socket.io , 结果 NAE 上模块出问题了
邮件列表请教了下, 原来需要用默认的模块, 避免自己上传
  评论这张
 
阅读(337)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017