Comment obtenir Facebook nom et prénom des valeurs à l'aide ASP.NET MVC 5 et OWIN?
Je sais qu'un champ " Nom " est fourni, mais je préfère pour l'accès au premier et dernier noms explicitement. Quelqu'un peut-il aider? Je suis toujours enveloppant ma tête autour de ASP.Net MVC.
Vous devez vous connecter pour publier un commentaire.
Dans votre Démarrage.Auth.cs
ConfigureAuth(IAppBuilder app)
méthode, définir les paramètres suivants pour Facebook:Puis de les utiliser pour accéder à la connexion de l'utilisateur info:
Et puis le suivant pour obtenir le premier nom:
public string FirstName { get { return chainValue( "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", // Google "urn:facebook:first_name" // Facebook ); } }
Facebook a changé son api d'autorisation. Vous pouvez obtenir plus d'informations à ce sujet ici: https://developers.facebook.com/docs/facebook-login/permissions
Nom public_profile autorisation
Et vous pouvez l'obtenir à l'aide de:
authenticationManager est une instance, vous pouvez obtenir de l'aide:
null
. Aussi, connaissez-vous un moyen d'obtenir le nom et prénom séparément?null
.Malheureusement, cette méthode ne fonctionne plus depuis que Facebook a changé par défaut des valeurs de retour de l'API mise à jour 2.4
Il semble que la seule façon d'obtenir le prenom etc. maintenant est d'utiliser le Facebook Graph API (comme cette messages suggère).
J'ai aussi trouvé ce post sur le Katana projet de site qui traite de cette question et déjà soumis une demande d'extraction, mais il n'a pas été fusionné jet.
J'espère que ce un coffre-fort à quelqu'un un peu de temps 😉
À compter de 2017, c'est le code qui fonctionne pour moi(Merci à David Poxon du code ci-dessus). Assurez-vous que vous avez mis à niveau à la version 3.1.0 de
Microsoft.Owin.Security.Facebook
.Dans le Démarrage.Auth.cs (ou de Démarrage.cs dans certains cas), placez ce code:
Puis dans votre contrôleur externe de connexion de la méthode de rappel, ajoutez ce code:
De même pour l'obtention de nom, utilisez la ligne ci-dessus et remplacer le
urn:facebook:first_name
avecurn:facebook:last_name
À partir de janvier 2019, je voulais confirmer la façon de le faire et de fournir un supplément de quelques bits (il y a beaucoup de conflit informations selon quelle année la réponse était écrit!). David et Waqas avoir les meilleures réponses (OMI). Je suis en utilisant MVC5, AspNetIdentity 2 et IdentityServer 3.
Tout d'abord, votre fournisseur d'identité de configuration pour Facebook:
Contrairement à certains des autres réponses, il combine les extra demandées champs avec ce que vous obtenez par défaut, et prend la
urn:facebook:
sur le devant de la réclamation afin qu'il corresponde à la valeur par défaut de réclamation schéma de nommage.Vous n'avez pas besoin d'ajouter des
Scopes
ouFields
(du moins, pas pour le premier et le dernier nom). La Version 4.1 deMicrosoft.Owin.Security.Facebook
déjà fait cela pour vous. Le le code source pour le FacebookAuthenticationOptions est ici. Pertinentes bits:Si vous utilisez IdentityServer 3 (comme je suis), alors vous aurez besoin de saisir de ces allégations sur l'authentification dans votre personnalisé
UserService
comme suit:Espère que cela aide quelqu'un!
Facebook a changé la façon dont leur API Graphique retourne la valeur de la mise à niveau de 2,4. Maintenant, vous devez spécifier explicitement tous les champs que vous voulez revenir.
Voir cette note de: facebook pour les développeurs de Mise à niveau Info:
Pour recevoir des emails, FirstName et LastName de facebook:
Tout d'abord, vous devez installer Facebook SDK pour .NET package nuget
Puis, dans votre démarrage.Auth.cs, de modifier la configuration de Facebook d'Authentification comme suit:
Enfin, dans votre AccountController, ajoutez le code suivant à
ExternalLoginCallback méthode:
Voir facebook API Guid pour plus de paramètres que vous pouvez obtenir en retour.
Ajouter prénom et nom dans facebook option Étendue