@page "/" @using SpotifyAPI.Web @using System @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration @inject NavigationManager navManager

Hello, world!

SPOTIFY_CLIENT_ID: @(Configuration["SPOTIFY_CLIENT_ID"] ?? "Not set, example won't work")

@if (_isAuthed && _me != null) {

Welcome @_me.DisplayName!

You have a grant total of @_totalPlaylistCount playlists!

} else { To get started: Login via Spotify } @code { private bool _isAuthed = false; private PrivateUser _me; private int? _totalPlaylistCount; private Uri _authUri; protected override void OnInitialized() { if (!string.IsNullOrEmpty(Configuration["SPOTIFY_CLIENT_ID"])) { var baseUri = navManager.ToAbsoluteUri(navManager.BaseUri); var loginRequest = new LoginRequest(baseUri, Configuration["SPOTIFY_CLIENT_ID"], LoginRequest.ResponseType.Token) { Scope = new[] { Scopes.PlaylistReadPrivate, Scopes.PlaylistReadCollaborative } }; _authUri = loginRequest.ToUri(); } } protected override async Task OnInitializedAsync() { var uri = new Uri(navManager.Uri); var maxLen = Math.Min(1, uri.Fragment.Length); Dictionary fragmentParams = uri.Fragment.Substring(maxLen)? .Split("&", StringSplitOptions.RemoveEmptyEntries)? .Select(param => param.Split("=", StringSplitOptions.RemoveEmptyEntries))? .ToDictionary(param => param[0], param => param[1]) ?? new Dictionary(); Console.WriteLine(fragmentParams); _isAuthed = fragmentParams.ContainsKey("access_token"); if (_isAuthed) { var spotify = new SpotifyClient(fragmentParams["access_token"]); _me = await spotify.UserProfile.Current(); _totalPlaylistCount = (await spotify.Playlists.CurrentUsers()).Total; } } }