При использовании шаблона индивидуальной угловой учетной записи ASP.Net core 3.0 и пакета Nuget AspNet.Security.OAuth.Spotify. Когда пользователь входит в систему, я хочу иметь возможность получить маркер доступа к spotify, чтобы я мог выполнять действия от имени пользователя. Однако, когда я вызываю await, ожидаем HttpContext.GetTokenAsync ("spotify", "access_token");результаты возвращают NULL.
Я немного отладил и видел токены spotify при втором + входе в систему в событии options.Events.OnCreatingTicket, но я полагаю, что токен просто не прошел мимо этого? Я не совсем уверен.
Startup.cs ConfigureServices
services.AddAuthentication()
.AddIdentityServerJwt()
.AddSpotify("spotify", options =>
{
options.ClientId = Configuration["SpotifySettings:ClientId"];
options.ClientSecret = Configuration["SpotifySettings:ClientSecret"];
options.CallbackPath = "/callback";
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SaveTokens = true;
String[] items = {
"playlist-read-private", "playlist-modify-public", "playlist-modify-private", "playlist-read-collaborative", "user-library-modify", "user-library-read", "user-read-email"
};
foreach (var item in items)
{
options.Scope.Add(item);
}
options.Events.OnRemoteFailure = (context) =>
{
// Handle failed login attempts here
return Task.CompletedTask;
};
options.Events.OnCreatingTicket = ctx =>
{
List<AuthenticationToken> tokens = ctx.Properties.GetTokens().ToList();
tokens.Add(new AuthenticationToken()
{
Name = "TicketCreated",
Value = DateTime.UtcNow.ToString()
});
ctx.Properties.StoreTokens(tokens);
return Task.CompletedTask;
};
});
Код, чтобы попытаться получить токен
if (!User.Identity.IsAuthenticated)
{
return StatusCode(403);
}
var client = httpClientFactory.CreateClient("spotify");
String spotifyToken = await HttpContext.GetTokenAsync("spotify", "access_token");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", spotifyToken);
var result = await client.GetAsync("v1/me/playlists");
Я ожидал получить spotify access_token, которыйЯ могу использовать для вызова API spotify, но spotifyToken просто возвращает ноль.