Spotify授权代码流(WPF浏览器控件)C#

Spotify授权代码流(WPF浏览器控件)C#,c#,wpf,oauth-2.0,spotify,spotify-desktop,C#,Wpf,Oauth 2.0,Spotify,Spotify Desktop,我使用Spotify帐户服务(授权代码流)通过传入所需参数(客户端id、响应类型和重定向uri)来获取授权代码。这是一个WPF应用程序,因此我使用浏览器控件并引导用户 https://accounts.spotify.com/authorize/?client_id=myclientId&response_type=code&redirect_uri=someUri 当我在浏览器中复制粘贴链接时,我会看到正确的内容,即带有“登录到Spotify”按钮的页面,但当我在WPF应用程

我使用Spotify帐户服务(授权代码流)通过传入所需参数(客户端id、响应类型和重定向uri)来获取授权代码。这是一个WPF应用程序,因此我使用浏览器控件并引导用户

https://accounts.spotify.com/authorize/?client_id=myclientId&response_type=code&redirect_uri=someUri
当我在浏览器中复制粘贴链接时,我会看到正确的内容,即带有“登录到Spotify”按钮的页面,但当我在WPF应用程序中的浏览器控件中导航时,它会给我一个带有Authorize.json文件的文件下载对话框,以便使用“打开”和“保存”选项进行下载,但在某些情况下,它会向浏览器显示正确的页面e

下面是我的代码:

    public winOAuthBrowserForm(string navigateTo)
    {
        InitializeComponent();
        webBrowser.Navigated += webBrowser_Navigated;
        webBrowser.Navigate(navigateTo);

    }


    private void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        if(!String.IsNullOrEmpty(e.Uri.Query))
        {
            //since we are looking for code for authorization that will be exchanged for request token from the server
            if (e.Uri.Query.StartsWith("?code=") || e.Uri.Query.Contains("code="))
            {
                code = HttpUtility.ParseQueryString(e.Uri.Query).Get("code");
                this.Close();
            }

            if (e.Uri.Query.StartsWith("?error=") || e.Uri.Query.Contains("error="))
            {
                error = HttpUtility.ParseQueryString(e.Uri.Query).Get("error");
                this.Close();
            }
        }
    }
我将此控件称为:

            var uri = string.Format(SpotifyAuthUriFormatter, RequestAuthBaseUrl, clientId);
            winOAuthBrowserForm form = new winOAuthBrowserForm(uri);
            form.ShowDialog();
这就是我所看到的:

更新:当我右键单击文档并查看属性时,我看到它将URL更改为res://ieframe.dll/navcancl.htm#... 我搜索了它,找到了一些与IE相关的解决方案(我使用的是最新的,但你不能确定它在客户端机器上是否是最新的),有人说它的防火墙设置。问题是,它有时只会出现


有什么想法吗?谢谢

在Wpf下使用WebBrowser时,我建议的第一件事是:如果可行,我们可以将其更新为您问题的答案;-)我已尝试设置32位和64位机器的注册表项,正如您在链接上的回答中所述。我已将DWORD设置为十六进制2af9,即11001,但它显示相同的文件下载对话框。它不断地把我引向res://ieframe.dll/navcancl.htmThe 在Wpf下使用WebBrowser时,我建议的第一件事是:如果它可以工作,我们可以将其更新为您问题的答案;-)我已经尝试为32位和64位计算机设置注册表项,正如您在链接上的回答中所述。我已将DWORD设置为十六进制2af9,即11001,但它显示相同的文件下载对话框。它不断地把我引向res://ieframe.dll/navcancl.htm