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
(DataFlex) Automatically Refresh Token for 401 UnauthorizedDemonstrates how to automatically refresh an access token (without user interaction) when the token expires and a 401 Unauthorized response is received.
Use ChilkatAx-win32.pkg Procedure Test String sTokenFilePath Handle hoJsonToken Boolean iSuccess Handle hoHttp String sJsonResponse Handle hoOauth2 Variant vSbJson Handle hoSbJson String sTemp1 Integer iTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Move "qa_data/tokens/googleCalendar.json" To sTokenFilePath // Get our current access token. Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken If (Not(IsComObjectCreated(hoJsonToken))) Begin Send CreateComObject of hoJsonToken End Get ComLoadFile Of hoJsonToken sTokenFilePath To iSuccess Get ComHasMember Of hoJsonToken "access_token" To bTemp1 If (bTemp1 = False) Begin Showln "No access token found." Procedure_Return End Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End Get ComStringOf Of hoJsonToken "access_token" To sTemp1 Set ComAuthToken Of hoHttp To sTemp1 Get ComQuickGetStr Of hoHttp "https://www.googleapis.com/calendar/v3/users/me/calendarList" To sJsonResponse Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 <> True) Begin Get ComLastStatus Of hoHttp To iTemp1 If (iTemp1 <> 401) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Showln "----" Get ComLastResponseBody Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // The access token must've expired. // Refresh the access token and then retry the request. Get Create (RefClass(cComChilkatOAuth2)) To hoOauth2 If (Not(IsComObjectCreated(hoOauth2))) Begin Send CreateComObject of hoOauth2 End Set ComTokenEndpoint Of hoOauth2 To "https://www.googleapis.com/oauth2/v4/token" // Replace these with actual values. Set ComClientId Of hoOauth2 To "GOOGLE-CLIENT-ID" Set ComClientSecret Of hoOauth2 To "GOOGLE-CLIENT-SECRET" // Get the "refresh_token" Get ComStringOf Of hoJsonToken "refresh_token" To sTemp1 Set ComRefreshToken Of hoOauth2 To sTemp1 // Send the HTTP POST to refresh the access token.. Get ComRefreshAccessToken Of hoOauth2 To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoOauth2 To sTemp1 Showln sTemp1 Procedure_Return End // The response contains a new access token, but we must keep // our existing refresh token for when we need to refresh again in the future. Get ComAccessToken Of hoOauth2 To sTemp1 Get ComUpdateString Of hoJsonToken "access_token" sTemp1 To iSuccess // Save the new JSON access token response to a file. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJson If (Not(IsComObjectCreated(hoSbJson))) Begin Send CreateComObject of hoSbJson End Set ComEmitCompact Of hoJsonToken To False Get pvComObject of hoSbJson to vSbJson Get ComEmitSb Of hoJsonToken vSbJson To iSuccess Get ComWriteFile Of hoSbJson sTokenFilePath "utf-8" False To iSuccess Showln "OAuth2 authorization granted!" Get ComAccessToken Of hoOauth2 To sTemp1 Showln "New Access Token = " sTemp1 // re-try the original request. Get ComAccessToken Of hoOauth2 To sTemp1 Set ComAuthToken Of hoHttp To sTemp1 Get ComQuickGetStr Of hoHttp "https://www.googleapis.com/calendar/v3/users/me/calendarList" To sJsonResponse Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End End Showln sJsonResponse Showln "-----------------------------" End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.