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) Refresh Access Token on 401 Unauthorized and Retry (Service Account)See more Google Cloud Storage ExamplesDemonstrates how to handle an expired access token error, refresh the token, and retry the request. (In this case, the request is to download an object from Google Cloud Storage.)
Use ChilkatAx-win32.pkg Procedure Test Handle hoSbToken Boolean iSuccess Handle hoHttp String sUrl Variant vFileData Handle hoFileData Integer iResponseCode Handle hoFac String sJsonKey Handle hoGAuth Variant vTlsSock Handle hoTlsSock Handle hoSbErrorResponse String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // This example uses a previously obtained access token having permission for the // scope "https://www.googleapis.com/auth/cloud-platform" // In this example, Get Google Cloud Storage OAuth2 Access Token, // the service account access token was saved to a text file. This example fetches the access token from the file.. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToken If (Not(IsComObjectCreated(hoSbToken))) Begin Send CreateComObject of hoSbToken End Get ComLoadFile Of hoSbToken "qa_data/tokens/googleCloudStorageAccessToken.txt" "utf-8" To iSuccess If (iSuccess = False) Begin Showln "Failed to load access token." Procedure_Return End Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End Get ComGetAsString Of hoSbToken To sTemp1 Set ComAuthToken Of hoHttp To sTemp1 // Construct a URL to download an object named "starfish.jpg" from the "chilkat-ocean" bucket. Get ComSetUrlVar Of hoHttp "bucket_name" "chilkat-ocean" To iSuccess Get ComSetUrlVar Of hoHttp "object_name" "starfish.jpg" To iSuccess Move "https://www.googleapis.com/storage/v1/b/{$bucket_name}/o/{$object_name}?alt=media" To sUrl // If there is an error response, then we didn't actually download the file data, // but instead we downloaded an error response.. Get Create (RefClass(cComChilkatBinData)) To hoFileData If (Not(IsComObjectCreated(hoFileData))) Begin Send CreateComObject of hoFileData End Get pvComObject of hoFileData to vFileData Get ComDownloadBd Of hoHttp sUrl vFileData To iSuccess Get ComLastStatus Of hoHttp To iResponseCode If ((iSuccess = False) And (iResponseCode <> 401)) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End If (iResponseCode = 401) Begin Showln "Received 401 Unauthorized response. Attempting to refresh the access token..." // May be that the access token expired. // Load our JSON key and request a new access token, then retry the original request. Get Create (RefClass(cComCkFileAccess)) To hoFac If (Not(IsComObjectCreated(hoFac))) Begin Send CreateComObject of hoFac End Get ComReadEntireTextFile Of hoFac "qa_data/googleApi/ChilkatCloud-13a07a2e8b3f.json" "utf-8" To sJsonKey Get ComLastMethodSuccess Of hoFac To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoFac To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatAuthGoogle)) To hoGAuth If (Not(IsComObjectCreated(hoGAuth))) Begin Send CreateComObject of hoGAuth End Set ComJsonKey Of hoGAuth To sJsonKey Set ComScope Of hoGAuth To "https://www.googleapis.com/auth/cloud-platform" Set ComExpireNumSeconds Of hoGAuth To 3600 Set ComSubEmailAddress Of hoGAuth To "" Get Create (RefClass(cComChilkatSocket)) To hoTlsSock If (Not(IsComObjectCreated(hoTlsSock))) Begin Send CreateComObject of hoTlsSock End Get ComConnect Of hoTlsSock "www.googleapis.com" 443 True 5000 To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoTlsSock To sTemp1 Showln sTemp1 Procedure_Return End Get pvComObject of hoTlsSock to vTlsSock Get ComObtainAccessToken Of hoGAuth vTlsSock To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoGAuth To sTemp1 Showln sTemp1 Procedure_Return End Get ComAccessToken Of hoGAuth To sTemp1 Get ComWriteEntireTextFile Of hoFac "qa_data/tokens/googleCloudStorageAccessToken.txt" sTemp1 "utf-8" False To iSuccess // Retry the original request. Get ComAccessToken Of hoGAuth To sTemp1 Set ComAuthToken Of hoHttp To sTemp1 Get pvComObject of hoFileData to vFileData Get ComDownloadBd Of hoHttp sUrl vFileData To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End End If (iResponseCode <> 200) Begin // Get the error response Get Create (RefClass(cComChilkatStringBuilder)) To hoSbErrorResponse If (Not(IsComObjectCreated(hoSbErrorResponse))) Begin Send CreateComObject of hoSbErrorResponse End Get pvComObject of hoFileData to vFileData Get ComAppendBd Of hoSbErrorResponse vFileData "utf-8" 0 0 To iSuccess Showln "Error response code = " iResponseCode Showln "Error:" Get ComGetAsString Of hoSbErrorResponse To sTemp1 Showln sTemp1 Procedure_Return End Showln "Success." // Save the downloaded data to a file. Get ComWriteFile Of hoFileData "qa_output/starfish.jpg" To iSuccess End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.