【问题标题】:Xamarin Mac application doesn't react when I try to allow it in Dropbox当我尝试在 Dropbox 中允许 Xamarin Mac 应用程序时,它没有反应
【发布时间】:2015-05-04 09:47:29
【问题描述】:

我正在开发一个 Xamarin Mac 应用程序,我需要与 Dropbox 进行一些数据同步。

我创建了一个 WebView,它导航到提示用户输入其用户名和密码的 URL。在点击 OK 并成功登录后,我会看到一个新屏幕,我可以在其中授予或拒绝应用程序访问其文件夹中的应用程序 > Dropbox 内的应用程序名称。

无论点击“取消”或“允许”,都不会发生任何事情。但是,如果我单击左上角的 Dropbox 图标,我会正常导航到我的仪表板。

我认为这可能是 Javascript 问题或类似问题,但我已经更改了我能想到的所有属性,但我仍然停留在同一页面上。

我需要设置什么才能继续前进?

【问题讨论】:

  • 我还怀疑是 JavaScript 错误。您能否检查该浏览器中的 JavaScript 控制台以查看是否/可能是什么?另外,无论如何,WebView 使用什么浏览器?如果不是官方支持(dropbox.com/help/3),我会建议跳到普通的系统浏览器。
  • 我已经把任务放在一边,因为我不得不做一些其他的事情,但我现在又回到了这个问题上,没有任何进展。你能解释一下“我建议跳到普通的系统浏览器”是什么意思吗?如何从我的应用程序外部捕获系统浏览器和 Dropbox 之间的交互。
  • 我的意思是我建议让用户在他们自己的浏览器(例如 Chrome、Firefox、IE、Safari 等)中访问 /authorize URL。这样,用户更有可能使用受支持的浏览器(根据 dropbox.com/help/3 )。用户授权您的应用后,您可以使用 OAuth 回调来通知/返回您的应用。那就是 OAuth 1 中的 oauth_callback 参数,或者 OAuth 2 中的 redirect_uri 参数。

标签: macos webview dropbox xamarin.mac


【解决方案1】:

我找到了解决我的问题的方法,这很奇怪(IMO),但也许这是 OSX 上的默认方法。

我订阅了 webView 控件必须提供的所有事件,我发现了这个“金块”。

一旦用户点击“允许”,CancelClientRedirect 事件就会引发,我偶然发现如果您查看了

YourWebViewControl.MainFrameUrl

您可以看到应该调用哪个回调 URL。

可能是http://yoururl.com/oauth=someRandomStringhttp://yoururl.com/not_approved=true

基于此 URL,您可以知道发生了什么(即应用(未)授权),然后做任何您想做的事情来响应。

希望这可以帮助别人!

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多