private void Browser_LoadingStateChanged(object sender, CefSharp.LoadingStateChangedEventArgs e) { Dispatcher.Invoke(() => Url = Browser.Address); if (Url != null && Url.StartsWith(AppInfo.SpotifyRedirectUri + "?code=")) { while (RefreshToken == null) { string code = UriExtensions.GetPropertyValue(Url, "code"); var tokenResp = _spotify.GetToken(code, AppInfo.SpotifyRedirectUri); this.ExpireTime = tokenResp.ExpiresIn; this.ResultToken = tokenResp.AccessToken; this.RefreshToken = tokenResp.RefreshToken; Dispatcher.Invoke(() => this.Browser.Dispose()); Dispatcher.Invoke(() => this.Close()); } } }
public async Task <string> GetAuthCode() { while (true) { HttpListenerContext context = _server.GetContext(); var resp = context.Response; string url = context.Request.RawUrl; if (url.Contains("?code=")) { string redirectHtml = "<script>window.close()</script>"; byte[] buffer = Encoding.UTF8.GetBytes(redirectHtml); resp.ContentLength64 = buffer.Length; resp.OutputStream.Write(buffer, 0, buffer.Length); resp.Close(); return(UriExtensions.GetPropertyValue(url, "code")); } await Task.Delay(10); } }