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

curl with OAuth2 Client Credentials

See more CURL Examples

This example shows how to run a simple CURL command with an OAuth2 access token for authorization. We use CURL to retrieve a SharePoint site ID, and Chilkat automatically fetches the OAuth2 access token using the provided credentials.

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.StringBuilder,
  Chilkat.HttpCurl,
  Chilkat.JsonObject;

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

procedure RunDemo;
var
  success: Boolean;
  sb: TStringBuilder;
  jsonOAuth2: TJsonObject;
  httpCurl: THttpCurl;
  responseJson: TJsonObject;
  statusCode: Integer;

begin
  success := False;

  //  This example will run the following curl command

  //  curl -X GET "https://graph.microsoft.com/v1.0/sites/{{sharepoint_hostname}}:/sites/{{site_name}}" \
  //    -H "Authorization: Bearer ACCESS_TOKEN" \
  //    -H "Accept: application/json"

  sb := TStringBuilder.Create;
  sb.AppendLn('curl -X GET "https://graph.microsoft.com/v1.0/sites/{{sharepoint_hostname}}:/sites/{{site_name}}" \");
  sb.AppendLn('  -H "Authorization: Bearer ACCESS_TOKEN" \");
  sb.AppendLn('  -H "Accept: application/json"');

  //  Build the JSON that provides information for getting the OAuth2 access token using the OAuth2 client credentials flow.
  jsonOAuth2 := TJsonObject.Create;

  jsonOAuth2.UpdateString('oauth2.client_id','CLIENT_ID');
  jsonOAuth2.UpdateString('oauth2.client_secret','CLIENT_SECRET');
  jsonOAuth2.UpdateString('oauth2.scope','https://graph.microsoft.com/.default');
  jsonOAuth2.UpdateString('oauth2.token_endpoint','https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token');

  httpCurl := THttpCurl.Create;

  //  Provide the information for getting the OAuth2 access token from the token endpoint
  //  Note: The Authorization header specified in the curl command will be ignored and replaced using the OAuth2 access token obtained at runtime from the token endpoint.
  httpCurl.SetAuth(jsonOAuth2);

  //  The placeholders {{sharepoint_hostname}} and {{site_name}} represent variables that must be defined before execution.
  //  When DoYourThing runs the curl command, it automatically substitutes these placeholders with their corresponding values.
  //  Below are the values assigned to these variables:
  httpCurl.SetVar('sharepoint_hostname','example.sharepoint.com');
  httpCurl.SetVar('site_name','test');

  //  Run the curl command.
  success := httpCurl.DoYourThing(sb.GetAsString());
  if (success = False) then
    begin
      WriteLn(httpCurl.LastErrorText);
      Exit;
    end;

  responseJson := TJsonObject.Create;
  responseJson.EmitCompact := False;

  httpCurl.GetResponseJson(responseJson);

  statusCode := httpCurl.StatusCode;
  WriteLn('response status code: ' + statusCode);

  WriteLn(responseJson.Emit());


  sb.Free;
  jsonOAuth2.Free;
  httpCurl.Free;
  responseJson.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.