sgcIndy XOAuth2 Delphi

· Bileşenler

sgcIndy 2024.5.0 sürümünden itibaren XOAuth2 Kimlik Doğrulama mekanizması desteklenir. IMAP AUTHENTICATE, POP AUTH ve SMTP AUTH komutlarıyla kullanılmak üzere SASL XOAUTH2 mekanizması. Bu mekanizma, örneğin bir kullanıcının Gmail hesabında kimlik doğrulaması yapmak için OAuth 2.0 Access Token'larının kullanılmasına olanak tanır.

TIdSASLXOAuth2

TIdSASLXOAuth2 bileşeninin, Yetkilendirme yapılmadan önce çağrılan OnAuthenticate olayı vardır. Olayın 2 parametresi vardır:


TIdSMTP bileşenini kullanarak bir e-posta göndermek istiyorsanız, yalnızca TIdSASLXOAuth2 bileşenini yeni bir SASLMechanism olarak ekleyin.
xOAuth2 := TIdSASLXOAUTH2.Create(nil);
smtp := TIdSMTP.Create(nil);
...
smtp.AuthType := satSASL;
smtp.SASLMechanisms.Clear;
smtp.SASLMechanisms.Add.SASL := xoauth2; 

SMTP ve XOAuth2 bileşenlerini yapılandırdıktan sonra, SMTP bileşenini kullanarak bir e-posta gönderin; Yetkilendirme gerektiğinde OnAuthenticate olayı çağrılır. Burada yalnızca Username ve Access Token değerlerini ayarlayın.

procedure OnXOAuth2Authenticate(Sender: TObject; var Username,
    Token: string);
begin
  Token := 'OAuth2 Access Token';
  Username := 'your mail account';
end; 

OAuth2 İstemcisi

OAuth2 Access Token, sgcWebSockets kütüphanesindeki TsgcHTTP_OAuth2_Client kullanılarak elde edilebilir.

OAuth2 istemcisini, Google kullanıcı hesabınızdan bir OAuth2 Access Token almak üzere nasıl yapılandıracağınıza dair bir örneği aşağıda bulabilirsiniz.

  OAuth2 := TsgcHTTP_OAuth2_Client.Create(nil);
  OAuth2.OnAfterAccessToken := OnOAuth2AfterAccessTokenEvent;
  OAuth2.OAuth2Options.GrantType := auth2CodePKCE;
  OAuth2.LocalServerOptions.IP := '127.0.0.1';
  OAuth2.LocalServerOptions.Port := 0;
  OAuth2.AuthorizationServerOptions.AuthURL := 'https://accounts.google.com/o/oauth2/auth';
  OAuth2.AuthorizationServerOptions.TokenURL := 'https://accounts.google.com/o/oauth2/token';
  OAuth2.AuthorizationServerOptions.Scope.Text := 'https://mail.google.com/';
  OAuth2.OAuth2Options.ClientId := '<your oauth2 client id>';
  OAuth2.OAuth2Options.ClientSecret := '<your oauth2 client secret>';
  OAuth2.Start;
procedure OnOAuth2AfterAccessTokenEvent(Sender: TObject; const
    Access_Token, Token_Type, Expires_In, Refresh_Token, Scope, RawParams:
    String; var Handled: Boolean);
begin
  ShowMessage(Access_Token);
end; 

Delphi XOAuth2 Demosu

SMTP Protokolünü kullanarak bir e-posta göndermek için XOAuth2 bileşenini, sgcWebSockets kütüphanesindeki OAuth2 İstemcisiyle birlikte gösteren bir demoyu aşağıda bulabilirsiniz. Bu kimlik doğrulama türünü kullanmak için XOAuth2 sekmesini seçin ve alanları doldurun: 

  1. Username
  2. OAuth2 Client Id
  3. OAuth2 Client Secret
  4. E-postanın gönderileceği adres
});