Wilfried Woivré & .Net

Access Control Service : Récupérer l’ID Facebook de vos utilisateurs

JANV21

Récupérer le Facebook Id de ces membres est extrêmement utile pour tout site, ou application, en effet, grâce à celui ci on peut facilement identifier un membre sur nos différentes applications ou sites, et faire des recoupements avec ces amis ! Bref c’est utile !

 

Donc voici, une petite méthode d’extension qui vous permettra de récupérer le Facebook Id de vos membres, s’ils se sont connectés via Access Control Service avec un provider Facebook :


  1. public static class FacebookIdentityProviderUtils
  2. {
  3.     private const string Facebook = "Facebook";
  4.     private const string Federation = "Federation";
  5.     private const string IdentityProviderClaimType = "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider";
  6.     private const string NameIdentifierClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier";
  7.  
  8.     public static int GetFacebookId(this IPrincipal principal)
  9.     {
  10.         if (principal == null)
  11.             throw new ArgumentNullException("principal");
  12.  
  13.         if (principal.Identity.AuthenticationType == Federation && principal.Identity.IsAuthenticated)
  14.         {
  15.             var identity = principal.Identity as ClaimsIdentity;
  16.             
  17.             // Check Facebook
  18.             if (identity != null && identity.Claims.First(c => c.ClaimType == IdentityProviderClaimType).Value.StartsWith(Facebook))
  19.             {
  20.                 // Get Id
  21.                 return Convert.ToInt32(identity.Claims.First(c => c.ClaimType == NameIdentifierClaimType).Value);
  22.             }
  23.         }
  24.         
  25.         throw new Exception("Error, you don't use a federation with Facebook provider");
  26.     }
  27. }

 

Bien entendu n’oubliez pas de référencer l’assembly Microsoft.IdentityModel afin de pouvoir accéder à ces informations ! Après cela vous pouvez facilement l’utiliser dans vos applications, comme par exemple ci dessous, avec un peu de Razor


  1. @using WindowsAzure.AccessControlService.Extensions
  2. @if(Request.IsAuthenticated) {
  3.     <img src="https://graph.facebook.com/@HttpContext.Current.User.GetFacebookId()/picture"/>
  4.     <text>Welcome <strong>@User.Identity.Name</strong>!
  5.     [ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
  6. }
  7. else {
  8.     @:[ @Html.ActionLink("Log On", "LogOn", "Account") ]
  9. }

 

Cela vous donnera un rendu de ce type :

image

Remonter