如何解决在处理API请求时如何检索AuthenticationToken?
我已经为我的Blazor WASM应用程序配置了External provider authentication。用户可以选择通过Spotify帐户登录,然后,我希望服务器从Spotify API下载一些有关他的数据。
services.AddAuthentication()
.AddIdentityServerJwt()
.AddSpotify(options =>
{
options.ClientId = "clientid";
options.ClientSecret = "secret";
options.CallbackPath = "/signin-spotify";
options.Savetokens = true;
var scopes = new List<string> {
//scopes
};
options.Scope.Add(string.Join(",",scopes));
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);
ctx.Properties.IsPersistent = true;
return Task.CompletedTask;
};
});
为了调用Spotify API,我需要一个访问令牌。如果我正确理解,令牌是在用户登录后分配给服务器的。在上面的代码中,我指定了OnCreatingTicket
事件,并且可以看到它被触发(刚登录后)和{{1 }}在access_token
列表中。
现在,问题是,我不知道以后如何检索该令牌。
登录后会发生以下情况:
\LikedSongs
- 最后,我的API控制器被解雇了:
protected override async Task OnInitializedAsync()
{
savedTracks = await HttpClient.GetFromJsonAsync<SavedTrack[]>("UsersTracks");
}
由于某些原因,[HttpGet]
public async Task<IEnumerable<SavedTrack>> GetAsync()
{
// here I need to have access_token
// ASP.net MVC tutorial I follow states,that below line should work
var token = await _httpContextAccessor.HttpContext.GetTokenAsync("Spotify","access_token");
// unfortunately token == null
}
为空。而且我在HttpContext中找不到其他标记。根据我的理解,令牌是用Cookie编码的,那么为什么在其中找不到它们?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。