【发布时间】:2015-12-11 06:08:35
【问题描述】:
我想使用 Rest (Delphi XE7) 使用 Google Api,这样做:
uses
...
{$IF DEFINED(ANDROID)}
REST.Authenticator.OAuth.WebForm.FMX;
{$ENDIF}
{$IF DEFINED(MsWindows)}
REST.Authenticator.OAuth.WebForm.Win;
{$ENDIF}
该程序在 Windows 上运行,在该程序更改 AuchCode 以访问令牌并且一切正常之后。
procedure TForm2.OAuth2_GoogleTasks_BrowserTitleChanged(const ATitle: string; var DoCloseWebView: boolean);
begin
if Pos('Success code', ATitle) > 0 then
begin
AuthCode := Copy(ATitle, 14, Length(ATitle));
if (AuthCode <> '') then
begin
editactoken.Text:= AuthCode;
DoCloseWebView := true;
webform.Release;
end;
end;
end;
procedure TForm2.Button59Click(Sender: TObject);
begin
WebForm:=Tfrm_OAuthWebForm.Create(nil);
WebForm.OnTitleChanged := self.OAuth2_GoogleTasks_BrowserTitleChanged;
WebForm.ShowWithURL(OAuth2Authenticator1.AuthorizationRequestURI);
end;
但我遇到了一个问题,我无法在 android 上复制验证码:
- Form2.OAuth2_GoogleTasks_BrowserTitleChanged 不起作用,因为标题没有改变;
-
REST.Authenticator.OAuth.WebForm.FMX 中根本没有标题:
private { Private declarations } FOnBeforeRedirect: TOAuth2WebFormRedirectEvent; FOnAfterRedirect: TOAuth2WebFormRedirectEvent; FOnBrowserTitleChanged : TOAuth2WebFormTitleChangedEvent; FLastURL: string; public
在 REST.Authenticator.OAuth.WebForm.Win 中看起来像这样:
private
{ Private declarations }
FOnBeforeRedirect: TOAuth2WebFormRedirectEvent;
FOnAfterRedirect: TOAuth2WebFormRedirectEvent;
FOnBrowserTitleChanged : TOAuth2WebFormTitleChangedEvent;
FLastTitle: string; // <-------
FLastURL: string
- fmx 变体中没有属性 webform.lasttitle(在 win 中我可以得到它)
- LastUrl 属性在重定向后看起来像这样:“......”但我不明白如何使用它来获取授权码。
- 尝试使用 IFMXClipboardService,但无法从 Twebbrowser 获取此文本。
- Google 不允许对 lastUrl 地址使用 Http 获取方法来获取响应并解析此代码(错误 405)。
- 我看过一些文章说没有办法从webbrowser fmx获取html代码,是这样吗?
任何想法如何在我的程序中获取此代码?
【问题讨论】:
标签: android delphi authentication oauth google-api