我正在尝试构建一个集成了一些Facebook数据的网络应用程序。 (特别是Facebook活动)。
我想知道处理同步的最佳做法/建议是什么。
这是我目前的想法: 在我的数据库中,我需要:
在mongoose语法中,它表示以下架构:
var UserSchema = new Schema({
id: { type: String, default: '' },
friends: [{type : Schema.ObjectId, ref : 'User'}]
})
mongoose.model(‘User', UserSchema )
var EventSchema = new Schema({
eid: { type: String, default: '' },
users: [{type : Schema.ObjectId, ref : 'User'}]
})
mongoose.model('Event', EventSchema)
目前,我正在使用Passport-Facebook来处理身份验证和Facebook-Node-SDK(https://github.com/Thuzi/facebook-node-sdk)来进行图形调用。 所以我可以在我的Passport FacebookStrategy中设置我的accessToken:
passport.use(new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL
},
function(accessToken, refreshToken, profile, done) {
FB.setAccessToken(accessToken); //Setting access token
User.findOne({ 'id': profile.id }, function (err, user) {
//handling creation in case of error
//then synchronization of friends
})
]);
用户登录后,我将其重定向到一个URL,该URL首先调用静态方法,该方法同步当前用户的FB事件,然后将其重定向到以下路径:
app.get('/events', events.index)
但这不符合RESTful标准吗? 例如,使用我的方法,我不需要这样的路线:
app.post('/events', events.add)
app.put('/events', events.update)
app.del('/events', events.destroy)
事实上,我没有看到如何正确实现这种类型的合成化,我担心未来的前端解决方案的集成。
有人能指出我缺少的东西,并最终给出一些建议/链接来处理这种情况吗? 使用官方Facebook SDK处理客户端事件列表是否更好?只需向我的API提供所需的ID?在这种情况下,如何保护数据?
更新: 这是这个问题的延伸Web app integration with facebook ( architecture issues ) 关于答案,我无法用我的具体案例弄明白。