Facebook MVC 5 ASP.NET Identity - E-Mail ist für bestimmte Benutzer null.

Dies ist ein Problem, das ich seit einem Monat zu lösen versuche. (habe irgendeinen möglichen Artikel / Code da draußen ausprobiert).

In ExternalLoginCallback-Aktion, AuthenticationManager.GetExternalLoginInfoAsync () gibt ein gültiges Objekt zurück (mit allen Anbieterdetails), aberemail ist für bestimmte Facebook-Benutzer null.

Für die große Mehrheit der Facebook-Login-E-Mail ist nicht voreingestellt. Aber für etwaei 30% der Anmeldungen ist eine Ausnahme aufgetreten. der Vorgang, da die E-Mail null ist.

Luckily vor einiger Zeit habe ich ein @ erstelFacebook User die das Problem reproduzieren. Ich habe in localhost eine sterile Testumgebung erstellt, und E-Mails sind für diesen Benutzer null und für andere Benutzer in Ordnung.

* Mit diesem Facebook-Benutzer kann ich mich auf jeder großen kommerziellen Website (z. B. IMDB) gut einloggen.

1) Ich habe mit VS2013 ein sauberes MVC 5-Projekt erstellt.

2) Alle Pakete bezüglich Authentifizierung aktualisiert:

<package id="Microsoft.AspNet.Identity.Core" version="2.1.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.1.0" targetFramework="net45" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.1.0" targetFramework="net45" />
<package id="Microsoft.Owin" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Owin.Security" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Owin.Security.Cookies" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Owin.Security.Facebook" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Owin.Security.OAuth" version="3.0.0" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net45" />

3) Heben Sie die Markierung des Facebook-Bereichs in Startup.Auth.cs auf und fügen Sie Folgendes hinzu:

var facebookAuthOptions = new FacebookAuthenticationOptions();
facebookAuthOptions.AppId = "***";
facebookAuthOptions.AppSecret = "***";
facebookAuthOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookAuthOptions);
Aktualisiere

Auf dem Einstellungsbildschirm dieses Facebook-Benutzers habe ich versucht, die E-Mail in eine andere E-Mail zu ändern und sie dann zurück zu ändern. Jetzt kommt die E-Mail gut an !! Wie könnte es sein

Antworten auf die Frage(2)

Ihre Antwort auf die Frage