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
(PureBasic) GeoOp Exchange Refresh Token for New Access TokenDemonstrates how to use the /oauth2/token endpoint to exchange it for a new access token once the current access token has expired. Note: This example requires Chilkat v9.5.0.65 or greater.
IncludeFile "CkRest.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; This example also assumes that OAuth2 access and refresh tokens were previously fetched. ; and saved in a JSON file. ; First get our previously obtained refresh token. ; { .... "refresh_token":"e6dqdG....mzjpT04w==", .... } jsonToken.i = CkJsonObject::ckCreate() If jsonToken.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/geoop.json") rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Connect to GeoOp... bAutoReconnect.i = 1 success = CkRest::ckConnect(rest,"login.geoop.com",443,1,bAutoReconnect) If success <> 1 Debug CkRest::ckLastErrorText(rest) CkJsonObject::ckDispose(jsonToken) CkRest::ckDispose(rest) ProcedureReturn EndIf ; Set the X-Version header. CkRest::ckAddHeader(rest,"X-Version","1.0") ; Provide the required form params to get the new access token Debug "refresh_token = " + CkJsonObject::ckStringOf(jsonToken,"refresh_token") CkRest::ckAddQueryParam(rest,"refresh_token",CkJsonObject::ckStringOf(jsonToken,"refresh_token")) CkRest::ckAddQueryParam(rest,"grant_type","refresh_token") CkRest::ckAddQueryParam(rest,"client_id","GEOOP-CLIENT-ID") CkRest::ckAddQueryParam(rest,"client_secret","GEOOP-CLIENT-SECRET") responseBody.s = CkRest::ckFullRequestFormUrlEncoded(rest,"POST","/oauth2/token") If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkJsonObject::ckDispose(jsonToken) CkRest::ckDispose(rest) ProcedureReturn EndIf ; If the response status code did not indicate success, then see what happened.. If CkRest::ckResponseStatusCode(rest) <> 200 Debug "Request Header: " Debug CkRest::ckLastRequestHeader(rest) Debug "----" Debug "Response StatusCode = " + Str(CkRest::ckResponseStatusCode(rest)) Debug "Response StatusLine: " + CkRest::ckResponseStatusText(rest) Debug "Response Header:" Debug CkRest::ckResponseHeader(rest) Debug responseBody CkJsonObject::ckDispose(jsonToken) CkRest::ckDispose(rest) ProcedureReturn EndIf json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::setCkEmitCompact(json, 0) CkJsonObject::ckLoad(json,responseBody) ; Show the full JSON response. It should contain the new access token... Debug CkJsonObject::ckEmit(json) CkJsonObject::ckDispose(jsonToken) CkRest::ckDispose(rest) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.