Ver Mensaje Individual
  #1  
Antiguo 19-12-2023
david.camaleon david.camaleon is offline
Miembro
 
Registrado: oct 2008
Posts: 18
Reputación: 0
david.camaleon Va por buen camino
Autorizacion Bearer Token en delphi

Buenos días,

Estoy tratando de obtener una lista de productos de un servicio API Rest que necesita autorización Bearer Token. Usando Postman funciona perfectamente una vez obtenido el token de autorización. Pero en delphi no se muy bien como hacerlo. mi Código es el siguiente;


Código Delphi [-]
procedure TFMain.Button2Click(Sender: TObject);
var
  token: WideString;
  RESTClient: TRESTClient;
  RESTRequest: TRESTRequest;
  RESTResponse: TRESTResponse;
  Authenticator:TOAuth2Authenticator;

begin
  Token:='xxxxxxxxxxxxxxxxxxxxxxxxxxx'

// Creamos componentes para las peticiones http
  RESTClient    := TRESTClient.Create(nil);
  RESTRequest   := TRESTRequest.Create(nil);
  RESTResponse  := TRESTResponse.Create(nil);
  Authenticator := TOAuth2Authenticator.Create(nil);

  try

    // Configurar el cliente REST
    REstClient.BaseURL        := 'https://api.server.es';    
    RESTClient.Accept         := 'application/json';
    RESTClient.Authenticator  := Authenticator;

    // Configurar el autenticador OAuth2
    Authenticator.AccessTokenEndpoint := UrlAutenticacion;
    Authenticator.AccessToken         := token;
    Authenticator.ClientID               := 'xxxxx; // UserID
    Authenticator.ClientSecret         := 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
    Authenticator.TokenType           := TOAuth2TokenType.ttBEARER;


    // Configurar la solicitud REST
    RESTRequest.Client    := RESTClient;
    RESTRequest.Response  := RESTResponse;
    RESTRequest.Method    := TRESTRequestMethod.rmGET;
    RESTRequest.Resource  := '/api/v2/products/GetAllProducts';

    // Realizar la solicitud
    RESTRequest.Execute;

    // Mostrar la respuesta
    Respuesta.Text:=Response.Content;

  finally
    // Liberar recursos
    RESTClient.Free;
    RESTRequest.Free;
    RESTResponse.Free;
    Authenticator.Free;
  end;
end;


Muchas gracias de antemano.
Responder Con Cita