Delphi DLL
Delphi DLL
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 Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, StringBuilder, HttpCurl, JsonObject;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
sb: HCkStringBuilder;
jsonOAuth2: HCkJsonObject;
httpCurl: HCkHttpCurl;
responseJson: HCkJsonObject;
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 := CkStringBuilder_Create();
CkStringBuilder_AppendLn(sb,'curl -X GET "https://graph.microsoft.com/v1.0/sites/{{sharepoint_hostname}}:/sites/{{site_name}}" \");
CkStringBuilder_AppendLn(sb,' -H "Authorization: Bearer ACCESS_TOKEN" \");
CkStringBuilder_AppendLn(sb,' -H "Accept: application/json"');
// Build the JSON that provides information for getting the OAuth2 access token using the OAuth2 client credentials flow.
jsonOAuth2 := CkJsonObject_Create();
CkJsonObject_UpdateString(jsonOAuth2,'oauth2.client_id','CLIENT_ID');
CkJsonObject_UpdateString(jsonOAuth2,'oauth2.client_secret','CLIENT_SECRET');
CkJsonObject_UpdateString(jsonOAuth2,'oauth2.scope','https://graph.microsoft.com/.default');
CkJsonObject_UpdateString(jsonOAuth2,'oauth2.token_endpoint','https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token');
httpCurl := CkHttpCurl_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.
CkHttpCurl_SetAuth(httpCurl,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:
CkHttpCurl_SetVar(httpCurl,'sharepoint_hostname','example.sharepoint.com');
CkHttpCurl_SetVar(httpCurl,'site_name','test');
// Run the curl command.
success := CkHttpCurl_DoYourThing(httpCurl,CkStringBuilder__getAsString(sb));
if (success = False) then
begin
Memo1.Lines.Add(CkHttpCurl__lastErrorText(httpCurl));
Exit;
end;
responseJson := CkJsonObject_Create();
CkJsonObject_putEmitCompact(responseJson,False);
CkHttpCurl_GetResponseJson(httpCurl,responseJson);
statusCode := CkHttpCurl_getStatusCode(httpCurl);
Memo1.Lines.Add('response status code: ' + IntToStr(statusCode));
Memo1.Lines.Add(CkJsonObject__emit(responseJson));
CkStringBuilder_Dispose(sb);
CkJsonObject_Dispose(jsonOAuth2);
CkHttpCurl_Dispose(httpCurl);
CkJsonObject_Dispose(responseJson);
end;