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
(SQL Server) 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]
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @rest int -- Use "Chilkat_9_5_0.Rest" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- URL: https://login.microsoftonline.com/TENANT_ID/oauth2/token DECLARE @bTls int SELECT @bTls = 1 DECLARE @port int SELECT @port = 443 DECLARE @bAutoReconnect int SELECT @bAutoReconnect = 1 DECLARE @success int EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'login.microsoftonline.com', @port, @bTls, @bAutoReconnect IF @success <> 1 BEGIN EXEC sp_OAGetProperty @rest, 'ConnectFailReason', @iTmp0 OUT PRINT 'ConnectFailReason: ' + @iTmp0 EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rest RETURN END -- Add query params to the request. EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'grant_type', 'client_credentials' EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'client_id', 'APP_ID' EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'client_secret', 'CLIENT_SECRET' -- Note: The resource must match the API for which you're using the access token.. EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'resource', 'https://management.azure.com/' DECLARE @strResponseBody nvarchar(4000) EXEC sp_OAMethod @rest, 'FullRequestFormUrlEncoded', @strResponseBody OUT, 'POST', '/TENANT_ID/oauth2/token' EXEC sp_OAGetProperty @rest, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rest RETURN END DECLARE @respStatusCode int EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @respStatusCode OUT IF @respStatusCode >= 400 BEGIN PRINT 'Response Status Code = ' + @respStatusCode PRINT 'Response Header:' EXEC sp_OAGetProperty @rest, 'ResponseHeader', @sTmp0 OUT PRINT @sTmp0 PRINT 'Response Body:' PRINT @strResponseBody EXEC @hr = sp_OADestroy @rest RETURN END DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT EXEC sp_OAMethod @json, 'Load', @success OUT, @strResponseBody EXEC sp_OASetProperty @json, 'EmitCompact', 0 EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT PRINT @sTmp0 -- 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.. EXEC sp_OAMethod @json, 'WriteFile', @success OUT, 'qa_data/tokens/azureToken.json' EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.