![]() |
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
(Xojo Plugin) 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.
// This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Dim tokenFilePath As String tokenFilePath = "qa_data/tokens/googleCalendar.json" // Get our current access token. Dim jsonToken As New Chilkat.JsonObject Dim success As Boolean success = jsonToken.LoadFile(tokenFilePath) If (jsonToken.HasMember("access_token") = False) Then System.DebugLog("No access token found.") Return End If Dim http As New Chilkat.Http http.AuthToken = jsonToken.StringOf("access_token") Dim jsonResponse As String jsonResponse = http.QuickGetStr("https://www.googleapis.com/calendar/v3/users/me/calendarList") If (http.LastMethodSuccess <> True) Then If (http.LastStatus <> 401) Then System.DebugLog(http.LastErrorText) System.DebugLog("----") System.DebugLog(http.LastResponseBody) Return End If // The access token must've expired. // Refresh the access token and then retry the request. Dim oauth2 As New Chilkat.OAuth2 oauth2.TokenEndpoint = "https://www.googleapis.com/oauth2/v4/token" // Replace these with actual values. oauth2.ClientId = "GOOGLE-CLIENT-ID" oauth2.ClientSecret = "GOOGLE-CLIENT-SECRET" // Get the "refresh_token" oauth2.RefreshToken = jsonToken.StringOf("refresh_token") // Send the HTTP POST to refresh the access token.. success = oauth2.RefreshAccessToken() If (success <> True) Then System.DebugLog(oauth2.LastErrorText) Return End If // 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. success = jsonToken.UpdateString("access_token",oauth2.AccessToken) // Save the new JSON access token response to a file. Dim sbJson As New Chilkat.StringBuilder jsonToken.EmitCompact = False success = jsonToken.EmitSb(sbJson) success = sbJson.WriteFile(tokenFilePath,"utf-8",False) System.DebugLog("OAuth2 authorization granted!") System.DebugLog("New Access Token = " + oauth2.AccessToken) // re-try the original request. http.AuthToken = oauth2.AccessToken jsonResponse = http.QuickGetStr("https://www.googleapis.com/calendar/v3/users/me/calendarList") If (http.LastMethodSuccess <> True) Then System.DebugLog(http.LastErrorText) Return End If End If System.DebugLog(jsonResponse) System.DebugLog("-----------------------------") |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.