Delphi RESTClient-使用Tfrm_OAuthWebForm

时间:2018-10-17 11:45:29

标签: delphi oauth-2.0 rest-client

我正在尝试:-

  1. 请求具有所需范围的OAuth 2.0授权代码

教程来自:- https://developer.service.hmrc.gov.uk/api-documentation/docs/tutorials

我正在使用带有RESTClient和Tfrm_OAuthWebForm的Delphi 10.1。

该示例显示“用户将被重定向到HMRC登录屏幕。提交凭据后,将要求他们授权您的应用程序访问请求的范围。”

我得到HMRC登录页面,只是一个:-

enter image description here 我只是在第一阶段:-

procedure TfrmMain.btnHello_User_RESTClient_Self_Bind_Test_1Click(Sender: TObject);
var
LURL: string;
wv: Tfrm_OAuthWebForm;
LToken: string;
begin
  /// step #1: get the auth-code
  LURL := 'https://test-api.service.hmrc.gov.uk/oauth/authorize';
  LURL := LURL + '?client_id=' + URIEncode (eHello_User_Client_ID.Text);
  LURL := LURL + '&scope=hello';
  LURL := LURL + '&redirect_uri=https://www.example.com/redirect'
  LURL := LURL + '&response_type=code'

  // optional
  // LURL := LURL + '&login_hint=' + URIEncode('user@example.com');

  Add_To_Memo(LURL, False{Clear_Memo});

  wv := Tfrm_OAuthWebForm.Create(self);
  try
    wv.OnTitleChanged := self.OAuth2Authenticator1_Hello_User_BrowserTitleChanged;
    wv.ShowModalWithURL(LURL);
  finally
    wv.Release;
  end;
end;

有什么想法我做错了吗?

希望如此。

tia

1 个答案:

答案 0 :(得分:0)

快速阅读HMRC指令后,这可能在您尝试使用的上下文中不起作用。他们的目的是要调用以显示其凭据页面,并在成功进行身份验证时希望将其重定向回您的Web服务器应用程序,位于“ https://www.example.com/redirect”,如在示例中,带有查询字符串中的auth令牌。您可以花费大量精力检测Tfrm_OAuthWebForm中的URL负载并提取令牌,但这并不容易。