Как устранить ошибку искаженного происхождения в Dropbox Javascript Chooser - PullRequest
0 голосов
/ 31 января 2019
Dropbox Chooser Error: Malformed origin

Я портирую приложение с Objective C на Delphi 10.2.Приложение использует Dropbox для сохранения и получения файлов.Версия iOS использует Dropbox SDK для iOS.Я пытаюсь использовать Dropbox Javascript Chooser в версии Delphi.Я использую FMX TWebBrowser.Я выполнил редактирование реестра Windows, описанное в разделе Поддержка интеграции JavaScript на платформе Windows, со страницы документации Delphi TWebBrowser.

Когда я запускаю Javascript Chooser, я получаю следующую ошибку:

Uhой!Похоже, этот виджет не настроен должным образом.Искаженное происхождение

Вот код 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: здесь .Я не знаю, применимо ли это решение к моему случаю сегодня.

Ключ data-app взят из регистрации Dropbox моего приложения и является тем же ключом, который использует приложение iOS.Единственная странность, которую я вижу, заключается в том, что отображаемый в окне ошибок URL-адрес не имеет значения для параметра link_type.

Заранее благодарен за любую помощь в исправлении этого.

...