2
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 选择器时,我收到以下错误:

哦哦!似乎此小部件未正确配置。畸形的起源

这是德尔福代码:

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 参数的值。

在此先感谢您提供解决此问题的任何帮助。

4

0 回答 0