1

我正在使用 Spotify 帐户服务(授权代码流)通过传入所需的参数(client_id、response_type 和 redirect_uri)来获取授权代码。它是一个 WPF 应用程序,所以我使用浏览器控件并将用户导航到

https://accounts.spotify.com/authorize/?client_id=myclientId&response_type=code&redirect_uri=someUri

当我在浏览器中复制粘贴链接时,我看到了正确的东西,即带有登录到 Spotify 按钮的页面,但是当我在我的 WPF 应用程序中浏览浏览器控件时,它给了我一个带有 Authorize.json 文件的文件下载对话框使用打开和保存选项下载,但在某些情况下,它会向浏览器代码显示正确的页面。

下面是我的代码:

    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 相关的解决方案(我使用的是最新的,但你不能确定它在客户端机器上是最新的),有人说它的防火墙设置。问题是,它有时只出现。

有任何想法吗?谢谢

4

0 回答 0