少なくとも現在ログインしているユーザーの属性には、グラフAPIを必要としないアプローチがあります。 sign_inおよびsign_upポリシーを設定するとき、認証が成功した後でトークンを介して返されるクレームを構成できます。 この方法は、現在ログインしているユーザーのみに適用されます。他のユーザーに関する情報が必要な場合は、graphAPIを使用する必要があります。
あなたのアプリケーションでは、現在のClaimsPrincipal
オブジェクトからそれらの要求/属性を取得できます。
たとえば、現在のアプリケーションで使用するクラスで、ユーザーのすべての必要な情報にアクセスすることができます。
public class ApplicationUser : IApplicationUser
{
private readonly IHttpContextAccessor contextAccessor;
public ApplicationUser(IHttpContextAccessor contextAccessor)
{
this.contextAccessor = contextAccessor;
}
public virtual bool IsAuthenticated => contextAccessor.HttpContext?.User?.Identity.IsAuthenticated ?? false;
public string Id => GetAttribute(ClaimTypes.NameIdentifier);
public string GivenName => GetAttribute(ClaimTypes.GivenName);
public string Surname => GetAttribute(ClaimTypes.Surname);
public string DisplayName => GetAttribute("name");
public bool IsNewUser => GetBoolAttribute("newUser");
public string Email => GetAttribute("emails");
public string PhoneNumber => GetAttribute("extension_PhoneNumber");
public bool IsCurrentUser(string userId)
{
return userId != null && Id != null && userId.Equals(Id, StringComparison.CurrentCultureIgnoreCase);
}
private string GetAttribute(string claim)
{
return IsAuthenticated ? contextAccessor.HttpContext.User.GetClaim(claim) : null;
}
public bool GetBoolAttribute(string claim)
{
bool output;
bool.TryParse(GetAttribute(claim), out output);
return output;
}
}
public static class ClaimsPrincipalExtensions
{
public static string GetClaim(this ClaimsPrincipal principal, string claim)
{
if (principal == null)
{
throw new ArgumentNullException(nameof(principal));
}
if (string.IsNullOrWhiteSpace(claim))
{
throw new ArgumentNullException(nameof(claim));
}
return principal.FindFirst(claim)?.Value;
}
}
インターフェースは私がそれを必要な場所私はそれを注入することができます::カスタムユーザー属性(PHONE_NUMBER)はさえあり
public interface IApplicationUser
{
string Id { get; }
string GivenName { get; }
string Surname { get; }
string DisplayName { get; }
bool IsNewUser { get; }
string Email { get; }
string PhoneNumber { get; }
bool IsCurrentUser(string userId);
}
編集:あなたは、簡単に作成することで、クライアントにこの情報を転送することができ残りのAPIエンドポイントをajaxで呼び出します。または、htmlのデータ属性で渡します。