Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Get Akeneo Token given Client ID and Secret

See more HTTP Misc Examples

Assumes you're starting with a client ID and secret obtained from your OAuth1 provider, such as OneLogin. Demonstrates how to get an akeneo token using your client id/secret in combination with your akeneo login/password.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  json: TJsonObject;
  url: string;
  resp: THttpResponse;
  access_token: string;
  expires_in: Integer;
  token_type: string;
  scope: string;
  refresh_token: string;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  //  The HTTP Basic authentication for this request is the
  //  OAuth client id and secret you've already obtained.
  http.BasicAuth := True;
  http.Login := 'my_akeneo_client_id';
  http.Password := 'my_akeneo_secret';

  //  Build this JSON:
  //  {
  //    "grant_type": "password",
  //    "username": "yourusername",
  //    "password": "yourpassword"
  //  }

  json := TJsonObject.Create;
  json.UpdateString('grant_type','password');
  json.UpdateString('username','my_akeneo_username');
  json.UpdateString('password','my_akeneo_password');

  //  POST this JSON (with the Basic Authentication header)
  url := 'http://pim.my-akeneo-site.com/api/oauth/v1/token';
  resp := THttpResponse.Create;
  success := http.HttpJson('POST',url,json,'application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn('Response status code: ' + resp.StatusCode);
  WriteLn('Response body: ' + resp.BodyStr);

  if (resp.StatusCode = 200) then
    begin
      //  Success.
      //  Parse the response, which looks like this:

      //  		{
      //  		    "access_token": "MTE0NzNkNzI5YTk0ZTBlNmFlNTI5NmVkOWJhZjUxYWRkN2UzZWIwOWNkMTkwNzY5Mzk3NGViMDFmYzdlODJlMg",
      //  		    "expires_in": 3600,
      //  		    "token_type": "bearer",
      //  		    "scope": null,
      //  		    "refresh_token": "ZDkyMzA2NDhlZjQ2MGQyMDQ2MWRiMDBmOTdkZjQ5ODY5Mzc3MTEzMjVkNTkwZThmNWRlNWY0MzllYWMxZWQ5ZA"
      //  		}

      json.Load(resp.BodyStr);
      access_token := json.StringOf('access_token');
      expires_in := json.IntOf('expires_in');
      token_type := json.StringOf('token_type');
      scope := json.StringOf('scope');
      refresh_token := json.StringOf('refresh_token');

      WriteLn('Access Token: ' + access_token);
    end;


  http.Free;
  json.Free;
  resp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.