我试图用Facebook身份验证编写一个小API,因为我是node.js的新手,我对如何构建这个问题感到有些困惑。
我有一条名为auth.js的路线,如下所示:
var express = require('express');
var crypto = require('crypto');
var rp = require('request-promise');
var router = express.Router();
router.post('/', function(req, res) {
rp('https://graph.facebook.com/me?access_token=' + req.body.fbAccessToken).then(function(body) {
var json = JSON.parse(body);
if(json.error) { res.status(403).send(json.error.message); }
var user = new User({
userId: json.id,
fbAccessToken: req.body.fbAccessToken,
apiAccessToken: crypto.randomBytes(64).toString('hex'),
firstName: json.first_name,
lastName: json.last_name,
email: json.email
});
user.save(function(err) {
if (err) throw err;
return user.userId;
});
}).then(function(userId) {
res.status(201).send('something');
}).catch(function(err) {
res.status(403).send(err);
});
});
module.exports = router;
当路线收到一个帖子时,它会从请求中获取Facebook令牌,并使用Facebook图形API检查它是否合法。 (抱歉,如果Promise的东西看起来有点时髦,我也试图了解它。)
无论如何,我也有一个User模型和一个user.js路由。我想知道的是,如果在我的身份验证路由中发生的用户创建应该移动到用户模型并且以某种方式从这里调用模型函数?通过用户路线可能吗?
干杯