首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.NET核心中对Spotify进行身份验证调用

如何在.NET核心中对Spotify进行身份验证调用
EN

Stack Overflow用户
提问于 2017-02-23 11:01:44
回答 1查看 1.2K关注 0票数 4

我正在尝试使用Spotify Web API来获取有关歌曲分析的信息。这需要有一个访问令牌来对端点进行呼叫。

到目前为止,我已经使用个人用户帐户模板创建了一个基本的API应用程序,这样我就可以通过Spotify将用户登录到我的应用程序中,然后使用访问和刷新令牌来对.NET进行调用。我可以成功地让我的用户登录到应用程序并请求他们的用户信息,但我似乎不知道如何保存令牌以便再次使用它们。

代码语言:javascript
复制
app.UseSpotifyAuthentication(new AspNet.Security.OAuth.Spotify.SpotifyAuthenticationOptions
        {
            ClientId = Configuration["Authentication:Spotify:ClientId"],
            ClientSecret = Configuration["Authentication:Spotify:ClientSecret"],
            SaveTokens = true,
            Scope = { "playlist-read-private", "playlist-modify-private", "user-library-read" },
            UserInformationEndpoint = "https://api.spotify.com/v1/me",

            Events = new OAuthEvents
            {
                OnCreatingTicket = async context =>
                {
                    var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);

                    var response = await context.Backchannel.SendAsync(request, context.HttpContext.RequestAborted);
                    response.EnsureSuccessStatusCode();

                    var user = JObject.Parse(await response.Content.ReadAsStringAsync());

                    var name = user.Value<string>("display_name");
                    if(!string.IsNullOrEmpty(name))
                    {
                        context.Identity.AddClaim(new Claim(ClaimTypes.Name, name, ClaimValueTypes.String, context.Options.ClaimsIssuer));
                    }
                }                    
            }
        });

上面是Configure方法中的代码,它启用了我从aspnet-contrib存储库获得的Spotify中间件。我将SaveTokens设置为true,但是我不知道它们的保存位置,因为我在SQL对象资源管理器中看不到它们。

我的猜测是在控制器类中运行Challenge方法,以便每次触发OnCreatingTicket OAuth事件,并将我获得的信息保存在模型中,但我不能完全确定这是否是A。做事情的正确方法和B。如果这可以工作,考虑到我需要在返回控制器后维护模型内容。

我搜索了所有地方,似乎.NET核心仍然太新,没有任何关于这方面的文档,除非我直接跳过它。任何帮助或指导都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-10-10 14:16:26

您只需调用await HttpContext.GetTokenAsync("Spotify", "access_token");从任何地方获取令牌即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42406210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档