我一直在挠头,试图弄清楚为什么我拥有的一个项目(我没有接触过的项目)不再起作用了。
基本上我试图从谷歌联系人那里取回一些数据。当我在 oAuth 部分选择“允许”时,它会一直给我一个 404 错误。这都是在 windows phone 7 模拟器中完成的。
然后我意识到我在我的 Windows 8 分区上,所以我回到我的 Windows 7 分区并且它工作正常。
想知道它是否是一些 IE 10 问题或什么的。有人对为什么会发生这种情况有任何理论吗?
编辑
这是我编写的一些快速示例代码,也许有人可以尝试并告诉我发生了什么。
string clientId = "You client id here";
public MainPage()
{
InitializeComponent();
string url = String.Format("https://accounts.google.com/o/oauth2/auth?scope=https://www.google.com/m8/feeds&redirect_uri=http://localhost&response_type=code&approval_prompt=auto&client_id={0}", clientId);
webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
webBrowser1.Navigate(new Uri(url, UriKind.Absolute));
}
void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
var queryParmas = e.Uri.ParseQueryString();
foreach (var item in queryParmas)
{
if (item.Key == "code")
{
string test1 = "If you got here then it works";
string test2 = "in windows 8";
}
}
}
}
xml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<phone:WebBrowser HorizontalAlignment="Left" IsScriptEnabled="True" Name="webBrowser1" VerticalAlignment="Top" Height="669" Width="468" />
</Grid>
编辑2
他们发布了适用于 Windows 7 的 IE 10,所以我安装了它,它仍然可以在 Windows 7 上运行,所以我想这不是 IE 问题。一定是Windows 8的东西?也许iis?
编辑3
以下是 Windows 7 中正在发生的事情的流程
- 应用程序启动并加载 MainPg.xmal
- 已触发导航但跳过了 if 语句
- 用户看到谷歌登录页面并输入信息并点击登录
- 已触发导航但跳过了 if 语句
- 用户看到“请求页面”并且必须允许应用程序权限
- 用户点击允许
- 导航被触发并进入“if”语句
- 用户看到 IIS 7 屏幕。
以下是 Windows 8 中正在发生的事情的流程
- 应用程序启动并加载 MainPg.xmal
- 已触发导航但跳过了 if 语句
- 用户看到谷歌登录页面并输入信息并点击登录
- 已触发导航但跳过了 if 语句
- 用户看到“请求页面”并且必须允许应用程序权限
- 用户点击允许
- 转到 404 页面导航未触发。
如您所见,按下允许按钮后一切都出错了。在 Windows 7 中,它返回到导航方法,然后显示 IIS 7 欢迎页面,但在 Windows 8 中,点击允许按钮后,它不会转到导航页面,而是显示 404。