8

我一直在挠头,试图弄清楚为什么我拥有的一个项目(我没有接触过的项目)不再起作用了。

基本上我试图从谷歌联系人那里取回一些数据。当我在 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 中正在发生的事情的流程

  1. 应用程序启动并加载 MainPg.xmal
  2. 已触发导航但跳过了 if 语句
  3. 用户看到谷歌登录页面并输入信息并点击登录
  4. 已触发导航但跳过了 if 语句
  5. 用户看到“请求页面”并且必须允许应用程序权限
  6. 用户点击允许
  7. 导航被触发并进入“if”语句
  8. 用户看到 IIS 7 屏幕。

以下是 Windows 8 中正在发生的事情的流程

  1. 应用程序启动并加载 MainPg.xmal
  2. 已触发导航但跳过了 if 语句
  3. 用户看到谷歌登录页面并输入信息并点击登录
  4. 已触发导航但跳过了 if 语句
  5. 用户看到“请求页面”并且必须允许应用程序权限
  6. 用户点击允许
  7. 转到 404 页面导航未触发。

如您所见,按下允许按钮后一切都出错了。在 Windows 7 中,它返回到导航方法,然后显示 IIS 7 欢迎页面,但在 Windows 8 中,点击允许按钮后,它不会转到导航页面,而是显示 404。

4

1 回答 1

0

您应该使用“导航”事件处理程序,而不是“导航”事件处理程序。这将允许您在获取代码值时取消导航。在导航之后调用导航处理程序,由于回调 url 并不真正存在,它会引发 404 错误。它似乎在您的 Windows 8 上运行正常,不知道为什么您没有在 Windows 7 上获得 404,因为您也应该在那里看到它。

于 2013-03-08T00:56:58.380 回答