Ich versuche, mich mit Facebook mit dem folgenden Code anzumelden, aber die E-Mail-Adresse des Benutzers kann nicht abgerufen werden. Ich vermisse etwas?Benutzer-E-Mail mit FacebookClient kann nicht empfangen werden
Hier Anfrage asp.net Mvc Aktionsmethode, die FacebookOAuthResult zurückgibt:
public ActionResult FacebookStartLogin(string returnUrl)
{
if (!this.Config.AuthenticationProviders.Facebook.IsDefined)
{
return ResultHelper.ForbiddenResult(this);
}
var oAuthClient = new FacebookOAuthClient();
oAuthClient.AppId = this.Config.AuthenticationProviders.Facebook.ApiKey;
oAuthClient.RedirectUri = new Uri(Request.Url, Url.Action("FacebookFinishLogin", "Authentication"));
var loginUri = oAuthClient.GetLoginUrl(new Dictionary<string, object>() { { "state", Session.SessionToken } });
Session.NextUrl = returnUrl;
return new RedirectResult(loginUri.AbsoluteUri);
}
und nach der Maßnahme Methode versucht, Benutzerdaten abzurufen, aber nicht Adresse Benutzer E-Mail
public ActionResult FacebookFinishLogin(string code, string state)
{
if (!this.Config.AuthenticationProviders.Facebook.IsDefined)
{
return ResultHelper.ForbiddenResult(this);
}
FacebookOAuthResult oauthResult;
if (state == Session.SessionToken && FacebookOAuthResult.TryParse(Request.Url, out oauthResult))
{
if (oauthResult.IsSuccess)
{
FacebookClient fbClient = new FacebookClient();
dynamic result = fbClient.Post("oauth/access_token", new
{
client_id = this.Config.AuthenticationProviders.Facebook.ApiKey,
client_secret = this.Config.AuthenticationProviders.Facebook.SecretKey,
redirect_uri = new Uri(Request.Url, Url.Action("FacebookFinishLogin", "Authentication")),
code = code
});
fbClient.AccessToken = result.access_token;
dynamic facebookUser = fbClient.Get("me?fields=id,name,first_name,last_name,about,link,birthday,timezone,email");
User user = _service.GetByProviderId(AuthenticationProvider.Facebook, facebookUser.id);
if (user == null)
{
//Its a new user for the application
user = SecurityHelper.CreateUser(facebookUser);
user = _service.Add(user, AuthenticationProvider.Facebook, facebookUser.id);
}
//Log the user in
Session.User = new UserState(user, AuthenticationProvider.Facebook);
if (!User.MobileNoVerified)
return Redirect(Url.Action("VerifyMobile", "Users"));
return Redirect(Session.NextUrl);
}
return ResultHelper.ForbiddenResult(this);
}
else
return ResultHelper.ForbiddenResult(this);
}
Als Antwort bekommen wir kann andere vom FB geteilte Parameter sehen, aber keine E-Mail. Hier ist Debug-Ausgabe Bild: Debug output
Sie sollten mehr klar, was API und Sprache Sie verwenden. Außerdem gibt es keine Möglichkeit, ohne Fehler zu diagnostizieren. Wenn Sie möchten, dass andere dies herausfinden, müssen Sie ihnen Ressourcen geben. Die korrekte Einrückung gilt ebenfalls als Standard. – jStaff
Hallo Jstaff .. Ich benutze C# mit Facebook API 2.4. hat auch das Debug-Response-Image angehängt. –
Awesome sieht besser – jStaff