为了账号安全,请及时绑定邮箱和手机立即绑定

为什么新的fb api 2.4在带有Identity和oauth 2的MVC 5上返回空电子邮件?

为什么新的fb api 2.4在带有Identity和oauth 2的MVC 5上返回空电子邮件?

C#
慕田峪7331174 2019-11-28 13:15:41
在fb将其api升级到2.4之前,所有东西都可以正常工作 (我在上一个项目中有2.3)。今天,当我在fb开发人员上添加新应用程序时,我使用api 2.4获得了它。问题:现在我收到来自fb(loginInfo.email = null)的空电子邮件。我当然检查过用户电子邮件在fb个人资料上是否处于公开状态,我越过了loginInfo对象,但没有找到其他电子邮件地址。我用谷歌搜索,但没有找到任何答案。请任何帮助..我有点失落..谢谢,我的原始代码(适用于2.3 API):在AccountController.cs中://// GET: /Account/ExternalLoginCallback[AllowAnonymous]public async Task<ActionResult> ExternalLoginCallback(string returnUrl){    var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();    if (loginInfo == null)    {        return RedirectToAction("Login");    }    //A way to get fb details about the log-in user:     //var firstNameClaim = loginInfo.ExternalIdentity.Claims.First(c => c.Type == "urn:facebook:first_name");  <--worked only on 2.3    //var firstNameClaim = loginInfo.ExternalIdentity.Claims.First(c => c.Type == "urn:facebook:name"); <--works on 2.4 api    // Sign in the user with this external login provider if the user already has a login    var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);    switch (result)    {        case SignInStatus.Success:            return RedirectToLocal(returnUrl);        case SignInStatus.LockedOut:            return View("Lockout");        case SignInStatus.RequiresVerification:            return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false });        case SignInStatus.Failure:        default:            // If the user does not have an account, then prompt the user to create an account            ViewBag.ReturnUrl = returnUrl;            ViewBag.LoginProvider = loginInfo.Login.LoginProvider;            return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email });  //<---DOESN'T WORK. loginInfo.Email IS NULL    }}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 460 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信