我尝试使用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可能仍然太新,无法提供任何相关文档,除非我只是直接通过它。任何帮助或指示将不胜感激。
答案 0 :(得分:0)
您只需致电let
即可从任何地方获取令牌。