Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Autorizacion Bearer Token en delphi (https://www.clubdelphi.com/foros/showthread.php?t=96545)

david.camaleon 19-12-2023 11:51:50

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.

Casimiro Notevi 19-12-2023 12:11:47

Falta cerrar las comillas aquí:
Código Delphi [-]
Authenticator.ClientID               := 'xxxxx; // UserID

gatosoft 03-01-2024 15:02:46

En este link hay un ejemplo de como alguien lo hace usando componentes Indy, para obtener el token y el DMVC Framework para ejecutar el REST...

https://stackoverflow.com/questions/...to-use-standar

En general, puedes hacer cualquier llamado a un endpoint añadiendo el token que has obtenido previamente, simplemente agregando un header "authorization" cuyo valor será una cadena de texto comenzada por la palabra BEARER...

oscarac 04-01-2024 16:29:32

hola, en algun momento hice algo similar
te dejo el link donde puse mi solucion

https://www.clubdelphi.com/foros/sho...0&postcount=29

espero te sirva


La franja horaria es GMT +2. Ahora son las 13:01:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi