我找不到关于这个函数的文档,因此我不能使它正常工作。什么时候调用这个函数,它在做什么,它的第一个参数是什么?我试图从passport中获取访问令牌,但无论如何都无法访问。
passport.use(new FacebookStrategy({
clientID: APP_ID,
clientSecret: APP_SECRET,
callbackURL: "http://localhost:3000/",
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({// what are these parameters?}, function (err, user) {
// when is this function called and what is it doing?
});
}
));
如何从passport获取访问令牌?
2条答案
按热度按时间wlzqhblo1#
User.findOrCreate
是一个虚构的函数,它代表了通过Facebook ID查找用户或在用户不存在时创建用户的任何函数。我认为你的第一个问题是你的回调URL只是去你的根,所以你可能永远不会得到这个函数。您的回调URL应该类似于
http://localhost:3000/auth/facebook/callback
。然后处理这个URL:
此时,身份验证完成。
accessToken
被返回给你--“这是应用程序调用API来代表他们读取、修改或写入特定人的Facebook数据时需要的”。您应该将其保存在存储用户访问令牌的某个表中。profile
是另一个关键变量,因为它是关于用户的信息(什么信息取决于服务)。在该函数中执行的操作由您自己决定。创建自己的
User.findOrCreate
下面是Facebook的护照代码,并有一些注解来解释它。这里假设你使用的是类似MongoDB的东西,并且有一个User
表。在本例中,User
是您声明的可以与User
表接口的任何变量。就我个人而言,我也使用“成员”表来跟踪每个用户的多个帐户(这样他们就可以用多个帐户进行身份验证),因为我是通过mongoose设置的。这实际上是我存储访问令牌的地方。我更喜欢在用户表中有一个Facebook列。但这取决于你
因此,我的
User.findOrCreate
版本是这样开始的:其中,成员资格是上述模型,并且被定义为变量:
qltillow2#
如果您想使用
findOrCreate
,请尝试npm包mongoose-findorcreate或supergoose例如
mongoose-findorcreate