Sample code for 30+ languages & platforms
Perl

AzureWebsites OAuth2 Password Flow

See more OAuth2 Examples

Demonstrates how to do OAuth 2.0 password flow for azurewebsites.net.

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->put_HttpVerb("POST");
$req->put_Path("/token");
$req->put_ContentType("application/x-www-form-urlencoded");
$req->AddParam("grant_type","password");
$req->AddParam("username","your_username");
$req->AddParam("password","your_password");

$tokenEndpoint = "https://your_api.azurewebsites.net/token";

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

$sbResponseBody = chilkat::CkStringBuilder->new();
$resp->GetBodySb($sbResponseBody);
$jResp = chilkat::CkJsonObject->new();
$jResp->LoadSb($sbResponseBody);
$jResp->put_EmitCompact(0);

print "Response Body:" . "\r\n";
print $jResp->emit() . "\r\n";

# Sample JSON response:

# {
#   "access_token": "NQGHn ... xTS",
#   "token_type": "bearer",
#   "expires_in": 1209599,
#   "userName": "your_username",
#   ".issued": "Mon, 27 Apr 2020 23:49:35 GMT",
#   ".expires": "Mon, 11 May 2020 23:49:35 GMT"
# }

$respStatusCode = $resp->get_StatusCode();
print "Response Status Code = " . $respStatusCode . "\r\n";
if ($respStatusCode >= 400) {
    print "Response Header:" . "\r\n";
    print $resp->header() . "\r\n";
    print "Failed." . "\r\n";
    exit;
}

# ----------------------------------
# Use the OAuth2 token in a request.
# For example...

$sbXml = chilkat::CkStringBuilder->new();
$success = $sbXml->LoadFile("c:/someDir/someXmlFile.xml","utf-8");
if ($success == 0) {
    print "Failed to load the XML file." . "\r\n";
    exit;
}

# Get the OAuth2 token and use it for authentication
$http->put_AuthToken($jResp->stringOf("token"));

$destUrl = "https://your_api.azurewebsites.net/destinationUrl";
$success = $http->HttpSb("POST",$destUrl,$sbXml,"utf-8","application/xml",$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

$respStatusCode = $resp->get_StatusCode();
print "Response Status Code = " . $respStatusCode . "\r\n";
if ($respStatusCode >= 400) {
    print "Response Header:" . "\r\n";
    print $resp->header() . "\r\n";
    print "Failed." . "\r\n";
    exit;
}

# Examine the response body
print $resp->bodyStr() . "\r\n";