Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Azure REST API Access TokenDemonstrates how to request an Azure REST API OAUTH2 access token. Note: In order to access resources a Service Principal needs to be created in your Tenant. It is really convenient to do it via AZ CLI: az ad sp create-for-rbac --name [APP_NAME] --password [CLIENT_SECRET]
IncludeFile "CkRest.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; URL: https://login.microsoftonline.com/TENANT_ID/oauth2/token bTls.i = 1 port.i = 443 bAutoReconnect.i = 1 success.i = CkRest::ckConnect(rest,"login.microsoftonline.com",port,bTls,bAutoReconnect) If success <> 1 Debug "ConnectFailReason: " + Str(CkRest::ckConnectFailReason(rest)) Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) ProcedureReturn EndIf ; Add query params to the request. CkRest::ckAddQueryParam(rest,"grant_type","client_credentials") CkRest::ckAddQueryParam(rest,"client_id","APP_ID") CkRest::ckAddQueryParam(rest,"client_secret","CLIENT_SECRET") CkRest::ckAddQueryParam(rest,"resource","https://management.azure.com/") strResponseBody.s = CkRest::ckFullRequestFormUrlEncoded(rest,"POST","/TENANT_ID/oauth2/token") If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) ProcedureReturn EndIf respStatusCode.i = CkRest::ckResponseStatusCode(rest) If respStatusCode >= 400 Debug "Response Status Code = " + Str(respStatusCode) Debug "Response Header:" Debug CkRest::ckResponseHeader(rest) Debug "Response Body:" Debug strResponseBody CkRest::ckDispose(rest) ProcedureReturn EndIf json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,strResponseBody) CkJsonObject::setCkEmitCompact(json, 0) Debug CkJsonObject::ckEmit(json) ; The result is an access token such as the following: ; { ; "token_type": "Bearer", ; "expires_in": "3600", ; "ext_expires_in": "3600", ; "expires_on": "1557864616", ; "not_before": "1557860716", ; "resource": "https://management.azure.com/", ; "access_token": "eyJ0eXAiOiJKV1QiL ... 20UFDDOHEyUg" ; } ; We'll save this JSON to a file for other examples to use.. CkJsonObject::ckWriteFile(json,"qa_data/tokens/azureToken.json") CkRest::ckDispose(rest) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.