私はデータベースにユーザーデータを格納するカスタムユーザーサービスを実装します。外部ログイン時のIdentityServer WithCustomUserServiceはnull参照例外をスローします
私はfacebookのような外部プロバイダとのauthenticaceをしようとすると、NullReferenceExceptionが発生します。
このスタックは、ログインページに値がないことを示す例外で見ることができます。 Facebookのボタンをクリックした結果、私は開始ログインページに再び立ちます。
しかし、なぜか、その値を正確に
私はAuthenticateExternal context.AuthenticateResult.User.Claims
の終わりにそれを見ることができる
私のユーザーサービスのルックスをこれらの請求が含まれているかはわかりませんこのように簡略化
public override async Task AuthenticateExternalAsync(ExternalAuthenticationContext context)
{
string id = context.ExternalIdentity.Claims.FirstOrDefault(i => i.Type == "id").Value;
var user = await gateway.ByExternalIds(context.ExternalIdentity.Provider, id);
if (user == null)
{
string displayName = context.ExternalIdentity.Claims.FirstOrDefault(i => i.Type.Equals("urn:facebook:name")).Value;
user = new User(context.ExternalIdentity);
await gateway.StoreAsync(user);
}
if (user != null)
{
await gateway.SetLastLogin(user.Subject, DateTimeOffset.Now);
context.AuthenticateResult = new AuthenticateResult(user.Subject, GetDisplayName(user), identityProvider: context.ExternalIdentity.Provider);
}
}
私は何が欠けていますか?