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 に答える