Perl
Perl
AzureWebsites OAuth2 Password Flow
See more OAuth2 Examples
Demonstrates how to do OAuth 2.0 password flow for azurewebsites.net.Chilkat Perl Downloads
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";