8

Mi stavo grattando la testa cercando di capire perché un progetto che ho (quello che non ho toccato) non funzionava più.Google Api Redirect mi dà errore 404 su WP7 Quando utilizzo Windows 8 ma non Windows 7

Fondamentalmente stavo cercando di recuperare alcuni dati dai contatti Google. Quando ho selezionato "allow" nella parte oAuth, continuava a darmi un errore 404. Questo è tutto fatto nell'emulatore di Windows Phone 7.

Mi sono reso conto che ero sulla mia partizione di Windows 8, quindi sono tornato alla mia partizione Windows 7 e funziona.

Chiedersi se si tratta di un problema di IE 10 o qualcosa del genere. Qualcuno ha delle teorie sul perché questo sta accadendo?

Modifica

Ecco alcuni esempi di codice veloce ho incitato forse qualcuno può provare e dirmi che cosa sta succedendo.

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> 

Edit2

Hanno pubblicato IE 10 per Windows 7 così ho installato questo e funziona ancora su Windows 7 quindi credo che non è un problema di IE. Deve essere qualcosa con Windows 8? Forse iis?

Edit3

Ecco un flusso di ciò che sta accadendo in Windows 7

  1. Applicazione start up e carichi MainPg.xmal
  2. Navigated viene attivato, ma se viene ignorata
  3. L'utente vede la pagina di login di Google e inserisce le informazioni e fa il login
  4. Navigato viene attivato ma se l'istruzione i s saltato
  5. utente vede "pagina di richiesta" e deve consentire autorizzazioni di applicazione
  6. colpo d'uso consentono
  7. Navigated viene attivato e va in "if"
  8. utente vede schermo IIS 7.

Ecco un flusso di ciò che sta accadendo in Windows 8

  1. Avvio applicazione e carichi MainPg.Xmal
  2. Navigated viene attivato, ma se viene ignorata
  3. utente vede Google pagina di accesso ed entra nelle informazioni e colpisce login
  4. Navigated viene attivato, ma se viene ignorata
  5. utente vede "pagina di richiesta" e deve consentire permessi applicazione
  6. Utente consentito consentire
  7. Passa a 404 pagine Navigate non viene attivato.

Come si può vedere, tutto va storto dopo aver premuto il pulsante di consenso. In Windows 7 torna al metodo Navigated e quindi mostra la pagina di benvenuto di IIS 7, ma in Windows 8 dopo aver premuto il pulsante allow, non va alla pagina navigata e mostra invece 404.

+0

che cosa hai esattamente scambiato con la partizione win7? – sschrass

+0

Non so cosa intendi? Ho il doppio avvio di Windows 8 e Windows 7. Ho Windows 7 telefono SDK e VS 2010 installato su entrambi. Se prendo lo stesso progetto e lo eseguo in Windows 8, non funziona. Se lo eseguo in Windows 7 funziona. – chobo2

+0

Grazie, era quello che volevo sapere. Per me non era chiaro, hai solo spostato alcuni file o eseguito un altro SO. Non sono del tutto consapevole di cosa stai facendo esattamente lì, ma il 'localhost' mi fa sospettare se stai cambiando sistema operativo. – sschrass

risposta

0

Si dovrebbe usare il gestore di eventi "Navigating", non il gestore di eventi "Navigated". Questo ti permetterà di cancellare la navigazione quando ottieni il valore del codice. Il gestore navigato viene chiamato dopo la navigazione e poiché l'URL di richiamata non esiste realmente, genera l'errore 404. Sembra che funzioni correttamente su Windows 8, non è sicuro del motivo per cui non si ottiene il 404 su Windows 7 perché dovresti vederlo anche lì.

+0

Penso di aver provato anche Navigating, ma proverò di nuovo a ricontrollare. Funziona su Windows 7 ma non su Windows 8. – chobo2

+0

Quello che sto dicendo è che dovresti "ricevere" un errore 404 quando usi l'evento "navigato" perché l'evento viene chiamato dopo che la navigazione è completata e l'url di callback punta a una posizione non valida Il gestore dell'evento "navigante" verrà richiamato prima di navigare all'url di richiamata, in modo da darvi la possibilità di analizzare l'url prima della navigazione, quindi non darà l'errore 404. – Jon

+0

Hmm strano. Bene Navigare sembra darmi la parte del codice in modo che sia almeno buona allora credo che con quel metodo chiamerei una nuova vista invece di lasciarlo reindirizzare a localhost? – chobo2

Problemi correlati