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 :
public static class FacebookIdentityProviderUtils
{
private const string Facebook = "Facebook";
private const string Federation = "Federation";
private const string IdentityProviderClaimType = "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider";
private const string NameIdentifierClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier";
public static int GetFacebookId(this IPrincipal principal)
{
if (principal == null)
throw new ArgumentNullException("principal");
if (principal.Identity.AuthenticationType == Federation && principal.Identity.IsAuthenticated)
{
var identity = principal.Identity as ClaimsIdentity;
// Check Facebook
if (identity != null && identity.Claims.First(c => c.ClaimType == IdentityProviderClaimType).Value.StartsWith(Facebook))
{
// Get Id
return Convert.ToInt32(identity.Claims.First(c => c.ClaimType == NameIdentifierClaimType).Value);
}
}
throw new Exception("Error, you don't use a federation with Facebook provider");
}
}
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
@using WindowsAzure.AccessControlService.Extensions
@if(Request.IsAuthenticated) {
<img src="https://graph.facebook.com/@HttpContext.Current.User.GetFacebookId()/picture"/>
<text>Welcome <strong>@User.Identity.Name</strong>!
[ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
}
else {
@:[ @Html.ActionLink("Log On", "LogOn", "Account") ]
}
Cela vous donnera un rendu de ce type :
Comments
Post comment