如何在 .NET Core 中对 Spotify 进行经过身份验证的调用

     2023-04-15     60

关键词:

【中文标题】如何在 .NET Core 中对 Spotify 进行经过身份验证的调用【英文标题】:How to make authenticated calls to Spotify in .NET Core 【发布时间】:2017-07-13 08:54:39 【问题描述】:

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

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

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 对象资源管理器中看不到它们。

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

我到处搜索,似乎 .NET Core 可能仍然太新,无法提供任何文档,除非我只是略过它。任何帮助或指导将不胜感激。

【问题讨论】:

【参考方案1】:

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

【讨论】:

有没有办法在.net core 中对 F# 项目进行单元测试?

】有没有办法在.netcore中对F#项目进行单元测试?【英文标题】:IsthereawaytounittestF#projectsin.netcore?【发布时间】:2017-06-1712:26:16【问题描述】:我正在尝试创建一个在.net核心中运行的F#单元测试项目。dotnetnew-txunittest将为C#创建一... 查看详情

Net Core:在Xunit Test中对AppService、Repository等执行所有依赖注入

】NetCore:在XunitTest中对AppService、Repository等执行所有依赖注入【英文标题】:NetCore:ExecuteAllDependencyInjectioninXunitTestforAppService,Repository,etc【发布时间】:2019-12-1108:55:22【问题描述】:我正在尝试在AppService的Xunit测试中实现依赖注... 查看详情

禁止在 ASP.NET Core 中对 API URL 进行重定向

】禁止在ASP.NETCore中对APIURL进行重定向【英文标题】:SuppressredirectonAPIURLsinASP.NETCore【发布时间】:2017-06-2104:08:27【问题描述】:我有一个ASP.NETCore站点,它对大多数页面使用cookie身份验证。对于这些页面,需要为未经授权的客户... 查看详情

Linq 查询在 ASP.NET-Core 3.0 及更高版本中对数字等字符串进行排序

】Linq查询在ASP.NET-Core3.0及更高版本中对数字等字符串进行排序【英文标题】:LinqquerytosortstringslikenumbersinASP.NET-Core3.0andabove【发布时间】:2021-10-3105:37:51【问题描述】:我最近从ASP.NET-Core2.2升级到ASP.NET-Core3.1。我的数量是字符串... 查看详情

在 Spotify 高级搜索中对运算符进行分组

】在Spotify高级搜索中对运算符进行分组【英文标题】:GroupingoperatorsinSpotifyadvancedsearch【发布时间】:2012-10-1504:09:21【问题描述】:我正在尝试使用SpotifyWebAPI在一个响应中返回多个特定结果。例如,也许我想要Spotify的关于迈克... 查看详情

如何在 vb.net 中对数据进行多次搜索

】如何在vb.net中对数据进行多次搜索【英文标题】:howtodomultiplesearchfordatainvb.net【发布时间】:2013-02-2513:19:36【问题描述】:PrivateSubcmdsearch_Click(senderAsSystem.Object,eAsSystem.EventArgs)Handlescmdsearch.ClickMe.StockDataBindingSource.Filter="I 查看详情

如何像实体框架一样在Core Data的一个类文件中对属于一个实体的方法进行分组?

】如何像实体框架一样在CoreData的一个类文件中对属于一个实体的方法进行分组?【英文标题】:HowtogroupmethodsbelongtooneentityinoneclassfileinCoreDatalikeinEntityFramework?【发布时间】:2010-06-0517:31:44【问题描述】:如何在像EntityFramework这... 查看详情

如何在 .net 中对 MemoryMappedFiles 使用 x64 互锁操作

】如何在.net中对MemoryMappedFiles使用x64互锁操作【英文标题】:Howtousex64InterlockedOperationsagainstMemoryMappedFilesin.net【发布时间】:2014-09-2310:27:41【问题描述】:我需要对.NET中MemoryMappedFiles中的内存使用互锁操作(CompareExchange、增量等... 查看详情

如何在 .net 中对 HTTPS 请求进行数字签名?

】如何在.net中对HTTPS请求进行数字签名?【英文标题】:HowdoIdigitallysignanHTTPSrequestin.net?【发布时间】:2011-01-1404:44:39【问题描述】:.net中是否有使用客户端SSL私钥对HTTPS请求进行数字签名的内置程序?此外,是否有内置程序可... 查看详情

如何在 ASP.NET MVC 视图中对数据进行分组?

】如何在ASP.NETMVC视图中对数据进行分组?【英文标题】:HowdoIgroupdatainanASP.NETMVCView?【发布时间】:2010-11-1217:22:30【问题描述】:在CrystalReports等报告工具中,有一些方法可以获取非规范化数据并按数据中的特定列对其进行分组... 查看详情

使用 IEnumerable<T> 在 .net core 中添加对象的实例

...描述】:我需要向IEnumerable添加一个对象,但不能100%确定如何去做。看来.add在我的.netcore3.1代码中对我不起作用。第一堂课是这样的:publicc 查看详情

如何在 .NET Core 3.0 SDK 上构建多目标 .NET 5 和 .NET Core 3.1

】如何在.NETCore3.0SDK上构建多目标.NET5和.NETCore3.1【英文标题】:Howtomultitarget.NET5and.NETCore3.1whilestillbuildingon.NETCore3.0SDK【发布时间】:2021-05-1511:26:46【问题描述】:我正在尝试升级我的项目以支持.NET5,同时仍在.NETCore3.1工具集上... 查看详情

如何在 ASP.NET Web Api 中对动作过滤器进行单元测试?

】如何在ASP.NETWebApi中对动作过滤器进行单元测试?【英文标题】:HowcanyouunittestanActionFilterinASP.NETWebApi?【发布时间】:2012-08-0414:18:27【问题描述】:我希望在我的服务中添加一个操作过滤器,以处理将链接数据添加到响应消息中... 查看详情

如何在 .Net 中创建和解析标签、长度、值 (TLV) 并在 Base64 中对其进行编码

】如何在.Net中创建和解析标签、长度、值(TLV)并在Base64中对其进行编码【英文标题】:HowtocreateandparseTag,Length,Value(TLV)in.NetandencodeitinBase64【发布时间】:2022-01-0214:42:42【问题描述】:二维码字段应以标签长度值(TLV)格式编码,... 查看详情

如何按照存储库模式在 Asp.Net Core 5.0 项目上实现 .Net Core Identity?

】如何按照存储库模式在Asp.NetCore5.0项目上实现.NetCoreIdentity?【英文标题】:HowToImplement.NetCoreIdentityonAsp.NetCore5.0ProjectFollowingRepositoryPattern?【发布时间】:2021-09-0109:23:58【问题描述】:我正在研究.NetCore5.0技术,我目前的项目结... 查看详情

如何在 .NET Core 中起订 ApplicationDbContext

】如何在.NETCore中起订ApplicationDbContext【英文标题】:HowdoIMoqtheApplicationDbContextin.NETCore【发布时间】:2021-07-1119:09:15【问题描述】:我是第一次尝试.NETCore,看看如何在单元测试中使用Moq。开箱即用,在ApplicationDbContext是构造函数... 查看详情

如何在 .Net Core ActionFilterAttribute 中使用依赖注入?

】如何在.NetCoreActionFilterAttribute中使用依赖注入?【英文标题】:HowcanIuseDependencyInjectionina.NetCoreActionFilterAttribute?【发布时间】:2019-03-1411:09:35【问题描述】:AuthenticationRequiredAttribute类publicclassAuthenticationRequiredAttribute:Act 查看详情

如何在 .Net Core 中读/写文件?

】如何在.NetCore中读/写文件?【英文标题】:Howtoread/writefilesin.NetCore?【发布时间】:2017-06-0117:43:08【问题描述】:.NetCore中读取/写入文件的选项有哪些?我正在开发我的第一个.NetCore应用程序并寻找File.Read*/File.Write*函数(System.I... 查看详情