Phonegap中的Dropbox Javascript数据存储API示例为Windows8应用程序提供了错误框架

Phonegap中的Dropbox Javascript数据存储API示例为Windows8应用程序提供了错误框架,javascript,cordova,windows-8,dropbox-api,Javascript,Cordova,Windows 8,Dropbox Api,我尝试为Dropbox Javascript数据存储API创建一个同时支持Android和Windows8的Phonegap应用程序,该应用程序使用了以下示例: 当我构建并运行Android应用程序时,它在Android平板电脑上运行得非常完美。但当我运行为Windows8创建的应用程序时,会显示一个错误:该应用程序无法导航到。。。因为这个错误:禁止框架。然后什么也没发生 我还没有找到一个替代使用框架的方法。我想知道,是否有办法成功运行本示例的Windows8应用程序,以及我将在何处更改示例以替

我尝试为Dropbox Javascript数据存储API创建一个同时支持Android和Windows8的Phonegap应用程序,该应用程序使用了以下示例:

当我构建并运行Android应用程序时,它在Android平板电脑上运行得非常完美。但当我运行为Windows8创建的应用程序时,会显示一个错误:该应用程序无法导航到。。。因为这个错误:禁止框架。然后什么也没发生

我还没有找到一个替代使用框架的方法。我想知道,是否有办法成功运行本示例的Windows8应用程序,以及我将在何处更改示例以替换框架。或者,如果有另一种方法来验证用户登录,这样我就不必使用框架

谢谢。

从中可以看出,InApp浏览器插件实际上不支持Windows,Dropbox Cordova auth驱动程序使用该插件。

这是一个黑客解决方案,可能会被移植到针对dropbox js的正确拉取请求中:

准备: 从下载dropbox js客户端,并将其放入项目的js文件夹中。 确保它列在解决方案资源管理器中。如果不是,右键单击文件夹并通过添加->现有项添加它。。。。 将dropbox.js添加到default.html。 创建一个新文件。我将其命名为helpers.js并将其添加到default.html中。 打开package.appxmanifest文件并声明自定义协议。声明->从下拉列表中选择协议->为其命名,例如myapp 转到dropbox并注册一个新应用程序。 将重定向URI添加到已注册的应用程序:myapp://dropbox. 请注意,myapp引用了自定义协议。 步骤1:添加帮助程序 将以下内容添加到helpers.js:

步骤2:添加对协议处理程序的支持 当我们向应用程序添加自定义协议并将uri重定向到dropbox时,我们需要处理 来自dropbox的呼叫。您的default.js

步骤3:向dropbox js添加自定义AuthDriver 打开dropbox.js并找到行:

  Dropbox.AuthDriver.Cordova = (function (_super) {
将以下代码粘贴到该行的正上方:

Dropbox.AuthDriver.WinRT = (function (_super) {
  __extends(WinRT, _super);

  function WinRT(options) {
    WinRT.__super__.constructor.call(this, options);
  }

  WinRT.prototype.url = function () {
    return 'myapp://dropbox';
  };

  WinRT.prototype.doAuthorize = function (authUrl, stateParam, client, callback) {
    var authHost, browser, onEvent, promptPageLoaded, removed,
      _this = this;
    var uri = new Windows.Foundation.Uri(authUrl);

    Windows.System.Launcher.launchUriAsync(uri)
  };

  return WinRT;
})(Dropbox.AuthDriver.BrowserBase);
请注意,这里再次提到了我们的定制协议

步骤4:使用dropbox 在helpers.js中,您将找到一个名为sync的函数,我使用它来

检查用户是否已通过身份验证。如果情况不是这样,我们将把他重定向到dropbox。 下载用户的联系人数据并将其登录到控制台。 基本上,您只需要使用MyHelpers.dropbox.getClient并与生成的客户端交互。它将返回

最后的话 希望有帮助!
您可以在此处找到客户端的可用方法:

谢谢@smarx,这是否意味着我将无法在Windows端使用Dropbox?如果没有Cordova,即不使用框架,您当然可以。对于科尔多瓦,我不能完全肯定。您可能需要编写自己的代码来处理Dropbox身份验证部分。hello@smarx您能告诉我,我们可以使用Dropbox cordova插件从android手机的Dropbox文件夹中选择图像或文件吗?我可以选择文件夹中没有的文件,但文件夹中的文件没有选择。我只是在解决同样的问题。我目前正在用cordova authdriver试用dropbox js。但这似乎不起作用。嗨@sdepold,你有什么选择吗?我只是朝着正确的方向迈出了一小步。一旦我让它工作起来,我会在这里发布一个解决方案。刚刚找到这个链接:似乎iFrame实际上有一个替代方案:
Dropbox.AuthDriver.WinRT = (function (_super) {
  __extends(WinRT, _super);

  function WinRT(options) {
    WinRT.__super__.constructor.call(this, options);
  }

  WinRT.prototype.url = function () {
    return 'myapp://dropbox';
  };

  WinRT.prototype.doAuthorize = function (authUrl, stateParam, client, callback) {
    var authHost, browser, onEvent, promptPageLoaded, removed,
      _this = this;
    var uri = new Windows.Foundation.Uri(authUrl);

    Windows.System.Launcher.launchUriAsync(uri)
  };

  return WinRT;
})(Dropbox.AuthDriver.BrowserBase);