|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (PowerBuilder) Refresh Expiring OAuth2 Access Token for Azure Registered AppSee more OAuth2 ExamplesShows how to renew an Azure App's access token using the refresh token when it's near expiration.
 integer li_rc oleobject loo_Json integer li_Success oleobject loo_DtExpire oleobject loo_Oauth2 oleobject loo_Fac // We previously obtained an access token and saved the JSON to a file using this example: // Get OAuth2 Access Token for Azure Registered App // This example will examine the JSON and expiration date, and if near expiration will // refresh the access token. loo_Json = create oleobject // Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject") if li_rc < 0 then destroy loo_Json MessageBox("Error","Connecting to COM object failed") return end if li_Success = loo_Json.LoadFile("qa_data/tokens/_myAzureApp.json") if li_Success <> 1 then Write-Debug "Failed to load the access token." destroy loo_Json return end if // The contents of the JSON look like this: // { // "token_type": "Bearer", // "scope": "User.Read Mail.ReadWrite Mail.Send", // "expires_in": 3600, // "ext_expires_in": 0, // "access_token": "EwBAA8l6B...", // "refresh_token": "MCRMdbe6Cd...", // "id_token": "eyJ0eXAiOiJ...", // "expires_on": "1494112119" // } // The "expires_on" value is a Unix time. loo_DtExpire = create oleobject // Use "Chilkat_9_5_0.CkDateTime" for versions of Chilkat < 10.0.0 li_rc = loo_DtExpire.ConnectToNewObject("Chilkat.CkDateTime") loo_DtExpire.SetFromUnixTime(0,loo_Json.IntOf("expires_on")) // If this date/time expires within 10 minutes of the current system time, refresh the token. if loo_DtExpire.ExpiresWithin(10,"minutes") <> 1 then Write-Debug "No need to refresh, the access token won't expire within the next 10 minutes." destroy loo_Json destroy loo_DtExpire return end if // OK, we need to refresh the access token.. loo_Oauth2 = create oleobject // Use "Chilkat_9_5_0.OAuth2" for versions of Chilkat < 10.0.0 li_rc = loo_Oauth2.ConnectToNewObject("Chilkat.OAuth2") // Note: The endpoint depends on the Azure App Registration. // See How to Choose the Correct Endpoints for your Azure App Registration loo_Oauth2.TokenEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/token" // Use your client ID. loo_Oauth2.ClientId = "CLIENT_ID" // Get the existing refresh token. loo_Oauth2.RefreshToken = loo_Json.StringOf("refresh_token") // Send the HTTP POST to refresh the access token. li_Success = loo_Oauth2.RefreshAccessToken() if li_Success = 0 then Write-Debug loo_Oauth2.LastErrorText destroy loo_Json destroy loo_DtExpire destroy loo_Oauth2 return end if Write-Debug "OAuth2 authorization granted!" Write-Debug "Access Token = " + loo_Oauth2.AccessToken // Get the full JSON response: loo_Json.Load(loo_Oauth2.AccessTokenResponse) loo_Json.EmitCompact = 0 // If an "expires_on" member does not exist, then add the JSON member by // getting the current system date/time and adding the "expires_in" seconds. // This way we'll know when the token expires. if loo_Json.HasMember("expires_on") <> 1 then loo_DtExpire.SetFromCurrentSystemTime() loo_DtExpire.AddSeconds(loo_Json.IntOf("expires_in")) loo_Json.AppendString("expires_on",loo_DtExpire.GetAsUnixTimeStr(0)) end if Write-Debug loo_Json.Emit() // Save the new access token JSON to a file for future requests. loo_Fac = create oleobject // Use "Chilkat_9_5_0.FileAccess" for versions of Chilkat < 10.0.0 li_rc = loo_Fac.ConnectToNewObject("Chilkat.FileAccess") loo_Fac.WriteEntireTextFile("qa_data/tokens/_myAzureApp.json",loo_Json.Emit(),"utf-8",0) destroy loo_Json destroy loo_DtExpire destroy loo_Oauth2 destroy loo_Fac | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.