コード例 #1
0
        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());
                }
            }
        }
コード例 #2
0
ファイル: AuthServer.cs プロジェクト: veselv2010/NowPlaying
        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);
            }
        }