2015-05-04 24 views
9

Pracuję nad aplikacją Xamarin dla komputerów Mac i muszę przeprowadzić synchronizację danych z Dropbox.Aplikacja Xamarin Mac nie reaguje, gdy próbuję zezwolić na to w Dropbox

Utworzyłem WebView, który przechodzi do adresu URL, gdzie użytkownik jest proszony o podanie swojej nazwy użytkownika i hasła. Po naciśnięciu OK i pomyślnym zalogowaniu się otrzymuję nowy ekran, na którym mogę przyznać lub zabronić aplikacji dostęp do jej folderu w Apps> AppName w Dropbox.

Bez względu na trafienie Anuluj lub Zezwalaj na nic się nie dzieje. Jeśli jednak kliknę ikonę Dropbox w lewym górnym rogu, jestem normalnie nawigowany do mojego pulpitu nawigacyjnego.

Pomyślałem, że może to być problem z Javascriptem lub coś podobnego, ale zmieniłem wszystkie właściwości, które mogę wymyślić i nadal utknąłem na tej samej stronie.

Co muszę ustawić, aby móc się poruszać?

+0

Podejrzewam również błąd JavaScript. Czy możesz sprawdzić konsolę JavaScript w tej przeglądarce, aby zobaczyć, czy/co to może być? W każdym razie, jakiej przeglądarki używa WebView? Jeśli nie jest oficjalnie wspierane (https://www.dropbox.com/help/3), polecam zamiast tego wyskakiwanie do zwykłej przeglądarki systemowej. – Greg

+0

Odłożyłem to zadanie, ponieważ musiałem zrobić kilka innych rzeczy, ale jestem już z powrotem w tym i nie dostałem więcej. Czy możesz wyjaśnić, co masz na myśli przez "polecam wyskakiwanie do zwykłej przeglądarki systemowej". Jak złapać interakcję między przeglądarką systemową a skrzynką domyślną spoza mojej aplikacji. –

+0

[Przekierowanie w celach informacyjnych: https://www.dropboxforum.com/hc/communities/public/questions/202340919-Cocoa-WebView-not-reacting-to-Allow- button-click-] – Greg

Odpowiedz

5

Znalazłem rozwiązanie dla mojego problemu, który jest dość dziwny (IMO), ale może jest to domyślny sposób na OSX.

Zasubskrybowałem wszystkie zdarzenia, które kontroler webView ma do zaoferowania i znalazłem ten "samorodek".

Gdy użytkownik kliknie „Zezwól” zdarzenie CancelClientRedirect została podniesiona i przez przypadek okazało się, że jeśli sprawdzeniu

YourWebViewControl.MainFrameUrl 

można zobaczyć, które callback URL powinien zostały nazwane.

Może to być http://yoururl.com/oauth=someRandomString lub http://yoururl.com/not_approved=true.

Na podstawie tego adresu URL można następnie dowiedzieć się, co się stało (tj. Aplikacja (nie) autoryzowana), a następnie zrobić, co trzeba w odpowiedzi na to.

Mam nadzieję, że to może pomóc komuś!