Sample code for 30+ languages & platforms
Perl Requires Chilkat v11.0.0+

Azure OAuth2 Client Credentials Grant Flow

See more OAuth2 Examples

Demonstrates how to get an OAuth2 access token for an Azure Registered App using the Client Credentials Grant Flow.

Note: Your Azure app must be registered as a single-tenant app to use client credentials.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

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

$http = chilkat::CkHttp->new();

$req = chilkat::CkHttpRequest->new();
$req->AddParam("client_secret","CLIENT_SECRET");
$req->AddParam("client_id","CLIENT_ID");

#  See Understanding Scopes in Azure OAuth2 Client Credentials Flow
$req->AddParam("scope","https://graph.microsoft.com/.default");

$req->AddParam("grant_type","client_credentials");

#  Note: Your Azure app must be registered as a single-tenant app to use client credentials.
#  Use your own tenant ID, for example 4d8fdd66-66d1-43b0-ae5c-e31b4b7de5cd
$url = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token";

$req->put_HttpVerb("POST");
$req->put_ContentType("application/x-www-form-urlencoded");

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpReq($url,$req,$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

$statusCode = $resp->get_StatusCode();
print "Response status code = " . $statusCode . "\r\n";

$json = chilkat::CkJsonObject->new();
$json->Load($resp->bodyStr());

$json->put_EmitCompact(0);
print $json->emit() . "\r\n";

#  Sample successful output:

#  {
#    "token_type": "Bearer",
#    "expires_in": 3599,
#    "ext_expires_in": 3599,
#    "access_token": "eyJ0eX...K0jOERg"
#  }

if ($statusCode == 200) {
    $json->WriteFile("qa_data/tokens/azureClientCredentialsToken.json");
    print "Success." . "\r\n";
}
else {
    print "Failed." . "\r\n";
}