如何解决Dropbox Javascript选择器中的格式错误的起源错误

时间:2019-01-31 09:11:05

标签: javascript delphi-10.2-tokyo dropbox-js

Dropbox Chooser Error: Malformed origin

我正在将一个应用程序从Objective C移植到Delphi 10.2。该应用程序使用Dropbox保存和检索文件。 iOS版本使用适用于iOS的Dropbox SDK。我正在尝试在Delphi版本中使用Dropbox Javascript选择器。我正在使用FMX TWebBrowser。我已经执行了Delphi TWebBrowser文档页面上的“在Windows平台上支持JavaScript集成”中描述的Windows注册表编辑。

当我触发Javascript选择器时,出现followinwg错误:

  

哦,哦!似乎未正确配置此小部件。格式错误   起源

这是Delphi代码:

unit DropBox;

interface

uses
  System.SysUtils,
  System.Types,
  System.UITypes,
  System.Classes,
  System.Variants,
  FMX.Types,
  FMX.Controls,
  FMX.Forms,
  FMX.Graphics,
  FMX.Dialogs,
  FMX.StdCtrls,
  FMX.WebBrowser;

type
    TfrmDropBox = class(TForm)
        WebBrowser1: TWebBrowser;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure WebBrowser1DidFailLoadWithError(ASender: TObject);
        procedure Button1Click(Sender: TObject);
  end;

var
  frmDropBox: TfrmDropBox;

implementation

{$R *.fmx}

const
  PageHTML =
    '<!DOCTYPE html>' +
    '<html>' +
    '<head>' +
      '<script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="xxxxxxxxx">' +
      '</script>' +
    '</head>' +
    '<body>' +
      '<br><br>' + 
    '<body>' +
    '</html>';

procedure TfrmDropBox.FormCreate(Sender: TObject);
begin
    WebBrowser1.LoadFromStrings(PageHTML, '/');
end;

procedure TfrmDropBox.Button1Click(Sender: TObject);
begin
    WebBrowser1.EvaluateJavaScript('Dropbox.choose({success: function(files){alert(files[0].link)}});');
end;

procedure TfrmDropBox.WebBrowser1DidFailLoadWithError(ASender: TObject);
begin
    ShowMessage('Load failed');
end;

end.

我认为这与旧的SO帖子here中的错误相同。我不知道该解决方案今天是否适用于我的情况。

data-app-key是从我的应用程序的Dropbox注册中获取的,与iOS应用程序使用的密钥相同。我唯一看到的是错误窗口中显示的URL似乎没有link_type参数的值。

在此之前,感谢您提供任何帮助。

0 个答案:

没有答案