1

http://www.asp.net/mvc/tutorials/mvc-4/using-oauth-providers-with-mvc

我正在使用本教程中的代码(当然,不是全部)。一切正常,但是当我尝试传递电子邮件时,我有System.Collections.Generic.KeyNotFoundException. 为什么?如何从 Facebook 传递电子邮件值?

            return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { 
                UserName = result.UserName, 
                ExternalLoginData = loginData,
                FullName = result.ExtraData["name"],
                Email = result.ExtraData["email"],
                ProfileLink = result.ExtraData["link"],
            });


这有效:

            return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { 
                UserName = result.UserName, 
                ExternalLoginData = loginData,
                FullName = result.ExtraData["name"],
                //Email = result.ExtraData["email"],
                ProfileLink = result.ExtraData["link"],
            });

问候

4

1 回答 1

0

默认情况下,Facebook 不共享电子邮件地址。有关更多信息,请参阅此帖子,但您可以更改您的注册模式以在为您的站点进行用户注册时要求电子邮件。此外,您可以先检查该集合是否具有密钥,然后再尝试访问它

AuthenticationResult result =
    OAuthWebSecurity
        .VerifyAuthentication(
            Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));

// Log in code

if (result.ExtraData.ContainsKey("email"))
    // Use email
于 2013-04-03T13:34:29.727 回答