Asp.net core 标识服务器标识令牌始终为空

Asp.net core 标识服务器标识令牌始终为空,asp.net-core,.net-core,asp.net-identity,identityserver4,Asp.net Core,.net Core,Asp.net Identity,Identityserver4,我正在使用identity server和.net核心应用程序 当前场景:从Facebook获取令牌,使用Facebook API验证用户。然后在数据库中创建一个用户 一切正常,只是返回的令牌始终具有null identity\u令牌 我曾尝试将id\u token token添加到作用域中,但也不起作用 登录API: [HttpPost("SocialLogin")] public async Task<IActionResult> SocialMediaLog

我正在使用identity server和.net核心应用程序

当前场景:从Facebook获取令牌,使用Facebook API验证用户。然后在数据库中创建一个用户

一切正常,只是返回的令牌始终具有null identity\u令牌

我曾尝试将
id\u token token
添加到作用域中,但也不起作用

登录API

[HttpPost("SocialLogin")]
public async Task<IActionResult> SocialMediaLogin()
{
    try
    {

        var protocol = _httpContextAccessor.HttpContext.Request.Scheme;
        var host = _httpContextAccessor.HttpContext.Request.Host.Value;
        var baseUrl = $"{protocol}://{host}/";

        #region Validating Headers and Parameters

        StringValues jwtToken = Request.Headers["token"];
        if (!jwtToken.Any())
        {
            return BadRequest("Each user should have a token");
        }

        var secretKey = _configuration["SecretKey"].ToString();
        var (status, paylod) = GeneralUtilities.CheckSocialMediaTokenHeaderAndValues(jwtToken, secretKey);
        if (status != ResponseStatus.Success)
        {
            return BadRequest("User Id or token are wrong");
        }

        #endregion

        var clientId = _configuration["Clients:Mobile:Id"].ToString();
        var secret = _configuration["Clients:Mobile:Secret"].ToString();
        var consumerKey = _configuration["ConsumerKey"].ToString();
        var consumerKeySecret = _configuration["ConsumerKeySecret"].ToString();

        var disco = await DiscoveryClient.GetAsync(baseUrl);
        if (disco.IsError) throw new Exception(disco.Error);

        var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, secret);
        var payload = new
        {
            provider = paylod.Provider,
            external_token = paylod.Token,
            email = paylod.Email,
            profilePicture = paylod.ProfilePictureUrl,
            twitter_secret = paylod.TwitterSecret,
            consumerKeySecret,
            consumerKey,
            displayName = paylod.DisplayName
        };

        //If user exist, we should update the profile Url of the user
        var user = await _userManager.FindByEmailAsync(payload.email);
        if (user != null)
        {
            user.ProfilePictureUrl = payload.profilePicture;
            await _userManager.UpdateAsync(user);
        }

        var result = await tokenClient.RequestCustomGrantAsync(grantType: "external", scope: "my-api offline_access", extra: payload);
        if (result.IsError) return new JsonResult(result.Json);

        if (!string.IsNullOrWhiteSpace(result.AccessToken))
        {
            return Ok(result);
        }
        return new JsonResult(null);
    }
    catch (Exception)
    {
        return BadRequest();
    }
}
标识令牌或访问令牌在哪里生成

services.AddIdentity<AppUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

services.AddIdentityServer()
    .AddOperationalStore(options =>
        options.ConfigureDbContext = builder =>
            builder.UseSqlServer(connectionString, sqloptions => sqloptions.MigrationsAssembly(migrationsAssembly)))
    .AddConfigurationStore(options =>
        options.ConfigureDbContext = builder =>
            builder.UseSqlServer(connectionString, sqloptions => sqloptions.MigrationsAssembly(migrationsAssembly)))
    .AddAspNetIdentity<AppUser>()
    .AddDeveloperSigningCredential();

// Configure Identity
services.Configure<IdentityOptions>(options =>
{
    // Password settings
    options.Password.RequireDigit = true;
    options.Password.RequireNonAlphanumeric = false;
    options.Password.RequireUppercase = false;
    options.Password.RequireLowercase = false;
});