我正在使用Spotify帐户服务(授权代码流)通过传递所需的参数(client_id,response_type和redirect_uri来获取授权代码。它是一个WPF应用程序,因此我使用浏览器控件并将用户导航到< / p>
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(我使用的是最新的,但你不能确定它在客户端机器上是最新的),有人说它的防火墙设置。事情是,它有时只出现。
有什么想法吗?感谢