//*********************************************************************************************************************************************************************************************************** /// <summary> /// Connect to the Spotify Web API /// </summary> /// <param name="timeout_ms">Connection timeout in ms</param> /// <param name="forceReauthenticate">if true, force the user to reauthenticate to the player application</param> /// <returns>true on connection success, otherwise false</returns> /// see: https://johnnycrazy.github.io/SpotifyAPI-NET/SpotifyWebAPI/auth/#implicitgrantauth /// Use https://developer.spotify.com/dashboard/ to get a Client ID /// It should be noted, "http://*****:*****@"(\?|\&|#)([^=]+)\=([^&]+)"); // Extract the fields from the returned URL MatchCollection matches = regex.Matches(urlFinal); foreach (Match match in matches) { if (match.Value.Contains("access_token")) { accessToken = match.Value.Replace("#access_token=", ""); } else if (match.Value.Contains("token_type")) { tokenType = match.Value.Replace("&token_type=", ""); } else if (match.Value.Contains("expires_in")) { ConnectionTokenExpirationTime = new TimeSpan(0, 0, int.Parse(match.Value.Replace("&expires_in=", ""))); } } _spotifyWeb = new SpotifyWebAPI() { TokenType = tokenType, AccessToken = accessToken }; waitForAuthFinish.Set(); // Signal that the authentication finished authWindowClosedByProgram = true; authWindow.Close(); } else { authWindow.WindowState = WindowState.Normal; userInteractionWaiting = true; } }; authWindow.Closed += (sender, args) => { waitForWindowClosed.Set(); if (!authWindowClosedByProgram) { waitForAuthFinish.Set(); } }; webBrowser.Navigate(url); // Navigate to spotifys login page to begin authentication. If credentials exist, you are redirected to an URL containing the access_token. authWindow.ShowDialog(); })); newThread.SetApartmentState(ApartmentState.STA); newThread.Start(); waitForAuthFinish.WaitOne(timeout_ms); if (userInteractionWaiting) { waitForWindowClosed.WaitOne(); waitForAuthFinish.WaitOne(timeout_ms); } } }); if (_spotifyWeb == null) { IsConnected = false; return(false); } else { _wasConnectionTokenExpiredEventRaised = false; IsConnected = true; return(true); } }