微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在处理API请求时如何检索AuthenticationToken?

如何解决在处理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列表中。

现在,问题是,我不知道以后如何检索该令牌。

登录后会发生以下情况:

  1. 用户导航至tokens(用于显示数据的空白wasm子页面
  2. Blazor页面调用我服务器的API来检索稍后将显示的数据
\LikedSongs
  1. 最后,我的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 举报,一经查实,本站将立刻删除。