简介
Meteor中自带强大的账户系统,并有丰富的第三方账户登录包如Github
,Google
,Twitter
等,让我们可以专注于主要业务需求的实现。但是它提供的样式单一,并且默认数据库Meteor.users
的格式已经确定,不利于后期的扩展。如果我们已经有自己的账户系统和用户数据库,可能需要统一数据库的格式。
本文主要有以下两个方面:
- 使用
Meteor
提供的默认包来实现Github账户登录
这个功能; - 自己配置,并把格式化的用户信息存入
Meteor.users
数据库中。
Meteor默认账户系统介绍
新建一个项目如github-login-demo:
1 | meteor create github-login-demo |
现在我们已经有了基本的账户系统,在你的main.html
文件的body
标签中加入这一行:
1 | {{> loginButtons}} |
此时运行meteor
命令,打开浏览器,就能看到一个登录按钮,如图所示,
我们可以注册和登录用户,上面github
登录的配置也很简单,只需按照提示,填入我们在Github OAuth申请的Client ID和Client Secret值。
完成后,我们就可以让用户使用Github
账号登录了。
自己配置用户登录信息
现在我们的页面只能显示用户名,并且数据库的内容是默认生成好的,没有头像,仓库数量等信息,接下来我们就自己配置用户的数据库,来保存我们想要的内容。首先添加第三方服务配置包:
1 | meteor add service-configuration |
在html文件中,添加一个button
1 | <button id="login">Github账户登录</button> |
在server/github.js
中,添加配置项。具体内容,见Github地址(文章末尾),通过响应按钮的点击事件,调用client/main.js
里的Meteor.loginWithGithub()
这个函数,我们就能实现用户的登录。
需要说明的是,我们是作为第三方登录账号集成到user数据库中,因此需要判断用户是否是使用第三方直接登录,还是注册新账号。如果不用第三方登录,我们这里直接返回(也可以添加其他内容)。如下:
1 | if (!user.services.github) { |
在github.js
文件中,我们添加了user.profile
用来储存一些我们想要的信息,停止meteor
,运行
1 | # 清除以前的数据库内容 |
现在点击按钮登录后,就会显现登录用户的一些信息,如图:
默认的用户数据库格式是固定的,我们使用默认的账户系统再注册一个新用户,对比这两个用户的信息,可以看到都有_id
,createdAt
,services
,resume
字段(文档),而使用github账号的用户中还有profile
字段,这正是我们储存我们想要的用户信息的地方。
我们的profile
字段看起来内容不多,其实Github
返回的json
内容很丰富,下面是完整的返回内容:
1 | { |
请到这里查看所有代码: github-login-demo
参考资料
- Meteor文档: loginWithGithub(),onCreateUser()
- Meteor guide : Accounts
后记
本文内容基于accounts-password
这个包自带的Meteor.users数据库,并没有重新构建新的数据库格式。