8

私が持っているプロジェクト (私が触れていないもの) が機能しなくなった理由を理解しようとして、頭を悩ませていました。

基本的に、Googleの連絡先からデータを取り戻そうとしていました。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";

               }
           }
        }


    }

xaml

 <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で何かする必要がありますか?もしかしてアイズ?

編集3

これがWindows 7で何が起こっているかの流れです

  1. アプリケーションの起動と MainPg.xmal のロード
  2. ナビゲートはトリガーされますが、ステートメントがスキップされた場合
  3. ユーザーは Google ログイン ページを表示し、情報を入力してログインを押します
  4. ナビゲートはトリガーされますが、ステートメントがスキップされた場合
  5. ユーザーに「リクエスト ページ」が表示され、アプリケーションのアクセス許可を許可する必要があります
  6. ユーザーヒット許可
  7. ナビゲートがトリガーされ、「if」ステートメントに入ります
  8. ユーザーに IIS 7 の画面が表示されます。

これがWindows 8で何が起こっているかの流れです

  1. アプリケーションの起動と MainPg.xmal のロード
  2. ナビゲートはトリガーされますが、ステートメントがスキップされた場合
  3. ユーザーは Google ログイン ページを表示し、情報を入力してログインを押します
  4. ナビゲートはトリガーされますが、ステートメントがスキップされた場合
  5. ユーザーに「リクエスト ページ」が表示され、アプリケーションのアクセス許可を許可する必要があります
  6. ユーザーヒット許可
  7. 404 ページに移動します。ナビゲートはトリガーされません。

ご覧のとおり、許可ボタンが押された後はすべてうまくいきません。Windows 7 では、Navigated メソッドに戻り、IIS 7 のウェルカム ページが表示されますが、Windows 8 では、許可ボタンを押した後、ナビゲートされたページに移動せず、代わりに 404 が表示されます。

4

1 に答える 1

0

「Navigated」イベント ハンドラではなく、「Navigating」イベント ハンドラを使用する必要があります。これにより、コード値を取得したときにナビゲーションをキャンセルできます。ナビゲートされたハンドラーはナビゲーションの後に呼び出され、コールバック URL が実際には存在しないため、404 エラーがスローされます。Windows 8 では正しく動作しているように見えますが、Windows 7 でも 404 が表示されない理由はわかりません。

于 2013-03-08T00:56:58.380 に答える