Sample code for 30+ languages & platforms
Lianja

AzureWebsites OAuth2 Password Flow

See more OAuth2 Examples

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

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

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

loHttp = createobject("CkHttp")

loReq = createobject("CkHttpRequest")
loReq.HttpVerb = "POST"
loReq.Path = "/token"
loReq.ContentType = "application/x-www-form-urlencoded"
loReq.AddParam("grant_type","password")
loReq.AddParam("username","your_username")
loReq.AddParam("password","your_password")

lcTokenEndpoint = "https://your_api.azurewebsites.net/token"

loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpReq(lcTokenEndpoint,loReq,loResp)
if (llSuccess = .F.) then
    ? loHttp.LastErrorText
    release loHttp
    release loReq
    release loResp
    return
endif

loSbResponseBody = createobject("CkStringBuilder")
loResp.GetBodySb(loSbResponseBody)
loJResp = createobject("CkJsonObject")
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = .F.

? "Response Body:"
? loJResp.Emit()

// 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"
// }

lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + str(lnRespStatusCode)
if (lnRespStatusCode >= 400) then
    ? "Response Header:"
    ? loResp.Header
    ? "Failed."
    release loHttp
    release loReq
    release loResp
    release loSbResponseBody
    release loJResp
    return
endif

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

loSbXml = createobject("CkStringBuilder")
llSuccess = loSbXml.LoadFile("c:/someDir/someXmlFile.xml","utf-8")
if (llSuccess = .F.) then
    ? "Failed to load the XML file."
    release loHttp
    release loReq
    release loResp
    release loSbResponseBody
    release loJResp
    release loSbXml
    return
endif

// Get the OAuth2 token and use it for authentication
loHttp.AuthToken = loJResp.StringOf("token")

lcDestUrl = "https://your_api.azurewebsites.net/destinationUrl"
llSuccess = loHttp.HttpSb("POST",lcDestUrl,loSbXml,"utf-8","application/xml",loResp)
if (llSuccess = .F.) then
    ? loHttp.LastErrorText
    release loHttp
    release loReq
    release loResp
    release loSbResponseBody
    release loJResp
    release loSbXml
    return
endif

lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + str(lnRespStatusCode)
if (lnRespStatusCode >= 400) then
    ? "Response Header:"
    ? loResp.Header
    ? "Failed."
    release loHttp
    release loReq
    release loResp
    release loSbResponseBody
    release loJResp
    release loSbXml
    return
endif

// Examine the response body
? loResp.BodyStr


release loHttp
release loReq
release loResp
release loSbResponseBody
release loJResp
release loSbXml