我正在使用Passport Facebook身份验证。
passport.use(new FacebookStrategy({ clientID: 'CLIENT_ID', clientSecret: 'CLIENT_SECRET', callbackURL: "http://www.example.com/auth/facebook/callback" }, function (accessToken, refreshToken, profile, done) { process.nextTick(function () { console.log(profile) }); } ));
对于一些Facebook帐户,我没有获得电子邮件id,我甚至尝试使用下面这样的范围变量,但仍然无法获得电子邮件id。
profileUrl:“”和ProfileFields:['',]
我想在这里补充更多信息。
在创建FacebookStrategy和passport时添加profileFields:['emails']
。authorize('facebook',{scope:['email']})为大多数用户解决了这个问题。
还有其他可能的原因,您将无法在身份验证后收到用户的电子邮件。
你需要确保你的用户没有上面列出的任何问题。更多信息可以找到html" target="_blank">https://developers.facebook.com/bugs/1802930019968631/
当您进行身份验证时,请使用类似的东西。身份验证时,需要在作用域中使用添加“电子邮件”。
app.get('/auth/facebook',
passport.authenticate('facebook', { scope: ['email']}),
function(req, res){
});
这对我很有效。
这里有几个链接帮助了我。
https://github.com/jaredhanson/passport-facebook/issues/11 https://github.com/jaredhanson/passport-facebook#how-do-i-ask-a-user-for-additional-permissions
确保代码中包含以下两项内容:
passport.use(new FacebookStrategy({
clientID: 'CLIENT_ID',
clientSecret: 'CLIENT_SECRET',
callbackURL: "http://www.example.com/auth/facebook/callback"
passReqToCallback : true,
profileFields: ['id', 'emails', 'name'] //This
},
这是:
app.get('/connect/facebook', passport.authorize('facebook', { scope : ['email'] }));
这使您可以访问以下内容:
最后一个是数组,所以使用profile。电子邮件[0]。值
以获取用户的第一个电子邮件地址。
正如shamim-reza
所指出的,您可能需要检查profile。电子邮件!==未定义,因为只有当用户至少有一个已验证的电子邮件地址时,该属性才存在。
正如
Weft
所指出的,您可能必须使用属性email
而不是emails
。
问题内容: 我检查了用户是否通过电子邮件验证。但是,无论我发送并确认了多少电子邮件,验证状态仍为。检查时我做错什么了吗? 问题答案: 我如何实现此功能的方法是添加一个 带有时间间隔的,它将检查用户是否已通过验证,然后在完成验证后终止计时器。 检查您当前用户状态的功能:
我检查了用户是否通过电子邮件进行验证。但是,无论我发送并确认了多少封电子邮件,验证状态仍然是。我在检查时是否做错了什么?
如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子
在本章中,我们将向您展示如何使用Firebase电子邮件/密码身份验证。 创建用户 要对用户进行身份验证,我们可以使用createUserWithEmailAndPassword(email, password)方法。 例子 (Example) 让我们考虑以下示例。 var email = "myemail@email.com"; var password = "mypassword"; fire
我也不会得到一个错误,如果我登录我的电子邮件和密码没有验证电子邮件。 非常感谢你事先的帮助。
在userpool中创建用户时,会使用临时密码发送用户邀请消息,但不会发送电子邮件验证消息 我创建了一个非常简单的设置来尝试aws cognito服务。下面是我在AWS cognito中所做的,我创建了一个用户池,一步一步地如下: 1)你想给你的用户池命名什么 - 现在,池创建后进入了通用设置-用户和组,单击创建用户A创建用户弹出窗口显示:用户名(必需): myEmail地址 向此新用户发送邀请?