sgcIndy XOAuth2 Delphi

· Components

Ab sgcIndy 2024.5.0 wird der XOAuth2-Authentifizierungsmechanismus unterstützt. Der SASL-XOAUTH2-Mechanismus für die IMAP-AUTHENTICATE-, POP-AUTH- und SMTP-AUTH-Befehle. Dieser Mechanismus erlaubt z. B. die Verwendung von OAuth-2.0-Access-Tokens, um sich am Gmail-Konto eines Nutzers zu authentifizieren.

TIdSASLXOAuth2

Die TIdSASLXOAuth2 verfügt über das Ereignis OnAuthenticate, das vor der Autorisierung aufgerufen wird. Das Ereignis hat 2 Parameter:


Wenn du eine E-Mail mit der TIdSMTP-Komponente senden möchtest, füge einfach die Komponente TIdSASLXOAuth2 als neuen SASLMechanism hinzu.
xOAuth2 := TIdSASLXOAUTH2.Create(nil);
smtp := TIdSMTP.Create(nil);
...
smtp.AuthType := satSASL;
smtp.SASLMechanisms.Clear;
smtp.SASLMechanisms.Add.SASL := xoauth2; 

Nachdem du die SMTP- und XOAuth2-Komponenten konfiguriert hast, sende eine E-Mail über die SMTP-Komponente; wenn die Autorisierung erforderlich ist, wird das Ereignis OnAuthenticate aufgerufen. Setze dort einfach Username und Access Token.

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

OAuth2-Client

Das OAuth2-Access-Token kann mit dem TsgcHTTP_OAuth2_Client aus der sgcWebSockets-Bibliothek bezogen werden.

Unten findest du ein Beispiel, wie der OAuth2-Client konfiguriert wird, um ein OAuth2-Access-Token von deinem Google-Konto zu erhalten.

  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 Demo

Unten findest du eine Demo, die die XOAuth2-Komponente zusammen mit dem OAuth2-Client aus der sgcWebSockets-Bibliothek zeigt, um eine E-Mail über das SMTP-Protokoll zu versenden. Wähle den Tab XOAuth2, um diese Art der Authentifizierung zu nutzen, und fülle die Felder aus: 

  1. Username
  2. OAuth2 Client Id
  3. OAuth2 Client Secret
  4. Adresse, an die die E-Mail gesendet wird
});