2015-05-04 36 views
9

Sto sviluppando un'applicazione Xamarin per Mac e ho bisogno di fare un po 'di sincronizzazione dei dati con Dropbox.L'applicazione Xamarin per Mac non reagisce quando provo a permetterlo in Dropbox

Ho creato una visualizzazione Web che consente di accedere a un URL in cui all'utente viene richiesto di immettere nome utente e password. Dopo aver premuto OK e aver effettuato correttamente l'accesso, mi viene presentata una nuova schermata in cui posso concedere o negare l'accesso alla sua app nella cartella App> AppName all'interno di Dropbox.

Indipendentemente dal raggiungimento di Annulla o Consenti non accade nulla. Se tuttavia clicco sull'icona Dropbox in alto a sinistra, vengo normalmente navigato nella mia dashboard.

Ho pensato che questo potrebbe essere un problema di Javascript o qualcosa di simile ma ho cambiato tutte le proprietà che posso pensare e sono ancora bloccato sulla stessa pagina.

Cosa devo impostare per essere in grado di andare avanti?

+0

Sospetto anche un errore JavaScript. Puoi controllare la console JavaScript in quel browser per vedere se/cosa potrebbe essere? Inoltre, in ogni caso, quale browser utilizza WebView? Se non è ufficialmente supportato (https://www.dropbox.com/help/3), consiglierei di passare invece al normale browser di sistema. – Greg

+0

Ho messo da parte il compito dato che dovevo fare altre cose, ma ora sono tornato a questo e non ho ottenuto altro. Puoi spiegare cosa intendi con "Vorrei raccomandarti di passare al normale browser di sistema". Come posso intercettare l'interazione tra il browser di sistema e il dropbox dall'esterno della mia app. –

+0

[Cross-linking per riferimento: https://www.dropboxforum.com/hc/communities/public/questions/202340919-Cocoa-WebView-not-reacting-to-Allow-button-click-] – Greg

risposta

5

Ho trovato la soluzione per il mio problema che è piuttosto strano (IMO) ma forse è il modo predefinito su OSX.

Mi sono iscritto a tutti gli eventi che il controllo WebView ha da offrire e ho trovato questo "nugget".

Una volta che l'utente fa clic su "Consenti" l'evento CancelClientRedirect è stata sollevata e per caso ho scoperto che se si estrae la

YourWebViewControl.MainFrameUrl 

si poteva vedere che l'URL di richiamata avrebbe dovuto chiamarsi.

Sarebbe http://yoururl.com/oauth=someRandomString o http://yoururl.com/not_approved=true.

Sulla base di questo URL è quindi possibile sapere cosa è successo (cioè app (non) autorizzato) e quindi fare ciò che si desidera in risposta a ciò.

Spero che questo possa aiutare qualcuno!