我正在试验本月发布的MVC 4 oAuth。 任何人都可以指出我可以添加电子邮件地址的位置,以便我可以使用用户属性存储它吗?
我需要能够发送欢迎电子邮件,但不知道从开箱即用的MVC 4 oAuth开始。
理想情况下,成功登录后,我希望在我的控制器中从Facebook接收用户信息并将其放在表格中,以便离线流程可以发送欢迎电子邮件。
谢谢, 维克多
答案 0 :(得分:5)
这是因为Facebook允许其用户指定与第三方认证服务共享的数据,例如您的网站Victor。默认情况下,我认为默认情况下不会共享电子邮件地址(是的,有多个可以添加到Facebook帐户)。用户必须进入并明确与第三方共享他们的电子邮件地址 - 这是我认为没有人使用过的。
Facebook强制共享的唯一“强制”共享数据是FullName(例如“Eric Duncan”)。其他所有内容都是可供用户共享的。
例如,我有我的Facebook设置只分享我的生日,但不是分娩年。我也有我的Facebook设置来分享我的兴趣,但不是我的电子邮件。
因此,您必须对保证的内容进行编码 - 在Facebook的情况下显示名称(在MVC 4.0 OAuth中称为“UserName”)。其他一切都无法保证。
我在OAuth应用程序中所做的事情,包括Facebook连接,是在第三方成功验证后,在回调网页上(例如MVC 4.0中的ExternalLoginConfirmation.cshtml),我会要求用户输入他们的显示名称,电子邮件地址,生日等。并在自定义视图模型上使用标准数据注释来创建所需的字段。
答案 1 :(得分:0)
为了让Facebook返回电子邮件,您必须在范围内指定它。例如,使用JS SDK,您可以执行类似....
的操作return FB.login(function(response) {
if (response.authResponse) {
return window.location = '/auth/facebook/callback';
}
}, {scope: 'email,user_likes'}
);