在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 }}
為什么新的fb api 2.4在帶有Identity和oauth 2的MVC 5上返回空電子郵件?
慕田峪7331174
2019-11-28 13:15:41