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 参数的值。
在此先感谢您提供解决此问题的任何帮助。