2015-05-04 7 views
9

Ich entwickle eine Xamarin Mac-Anwendung und ich muss einige Daten mit Dropbox synchronisieren.Xamarin Mac-Anwendung reagiert nicht, wenn ich versuche, es in Dropbox zuzulassen

Ich habe ein WebView erstellt, das zu einer URL navigiert, wo der Benutzer aufgefordert wird, seinen Benutzernamen und sein Passwort einzugeben. Nachdem ich OK gedrückt und mich erfolgreich angemeldet habe, wird mir ein neuer Bildschirm angezeigt, auf dem ich den App-Zugriff auf seinen Ordner unter Apps> AppName in Dropbox gewähren oder verweigern kann.

Unabhängig von schlagen Abbrechen oder Erlauben nichts passiert. Wenn ich jedoch auf das Dropbox-Symbol oben links klicke, navigiere ich normal zu meinem Dashboard.

Ich dachte, dass dies ein Javascript-Problem oder etwas ähnliches sein könnte, aber ich habe alle Eigenschaften geändert, die ich denken kann und ich bin immer noch auf der gleichen Seite stecken.

Was muss ich einstellen, um weitermachen zu können?

+0

Ich vermute auch einen JavaScript-Fehler. Können Sie die JavaScript-Konsole in diesem Browser überprüfen, um zu sehen, ob/was das sein könnte? Welchen Browser verwendet WebView auf jeden Fall? Wenn es keine offizielle Unterstützung (https://www.dropbox.com/help/3) gibt, würde ich empfehlen, stattdessen zum normalen Systembrowser zu springen. – Greg

+0

Ich habe die Aufgabe beiseite gelegt, da ich noch etwas anderes machen musste, aber jetzt bin ich wieder da und bin nicht weiter gekommen. Kannst du erklären, was du mit "Ich würde stattdessen zum normalen Systembrowser springen" empfehlen. Wie kann ich die Interaktion zwischen dem Systembrowser und Dropbox von außerhalb meiner App abfangen? –

+0

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

Antwort

5

Ich habe die Lösung für mein Problem gefunden, die ziemlich seltsam ist (IMO), aber vielleicht ist es die Standardmethode auf OSX.

Ich abonnierte alle Ereignisse, die die webView-Steuerung zu bieten hat, und ich fand dieses "Nugget".

Sobald der Benutzer angeklickt „Zulassen“ die CancelClientRedirect Veranstaltung wurde zufällig angesprochen, und ich fand heraus, dass, wenn Sie die

Besuche
YourWebViewControl.MainFrameUrl 

könnten Sie die Callback-URL sehen sollte aufgerufen wurden.

Es wäre entweder http://yoururl.com/oauth=someRandomString oder http://yoururl.com/not_approved=true.

Basierend auf dieser URL können Sie dann wissen, was passiert ist (d. H. App (nicht) autorisiert) und dann tun, was Sie wollen als Antwort darauf.

Hoffe, das könnte jemand helfen!