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
(Tcl) ETrade Renew Access TokenRenews an ETrade OAuth access token. For more information, see https://apisb.etrade.com/docs/api/authorization/renew_access_token.html
load ./chilkat.dll # This requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. set http [new_CkHttp] CkHttp_put_OAuth1 $http 1 CkHttp_put_OAuthVerifier $http "" CkHttp_put_OAuthConsumerKey $http "ETRADE_CONSUMER_KEY" CkHttp_put_OAuthConsumerSecret $http "ETRADE_CONSUMER_SECRET" # Load the access token previously obtained via the OAuth1 Authorization set jsonToken [new_CkJsonObject] set success [CkJsonObject_LoadFile $jsonToken "qa_data/tokens/etrade.json"] if {$success != 1} then { puts "Failed to load OAuth1 token" delete_CkHttp $http delete_CkJsonObject $jsonToken exit } CkHttp_put_OAuthToken $http [CkJsonObject_stringOf $jsonToken "oauth_token"] CkHttp_put_OAuthTokenSecret $http [CkJsonObject_stringOf $jsonToken "oauth_token_secret"] # resp is a CkHttpResponse set resp [CkHttp_QuickGetObj $http "https://api.etrade.com/oauth/renew_access_token"] if {[CkHttp_get_LastMethodSuccess $http] != 1} then { puts [CkHttp_lastErrorText $http] delete_CkHttp $http delete_CkJsonObject $jsonToken exit } # Make sure a successful response was received. if {[CkHttpResponse_get_StatusCode $resp] != 200} then { puts [CkHttpResponse_statusLine $resp] puts [CkHttpResponse_header $resp] puts [CkHttpResponse_bodyStr $resp] delete_CkHttp $http delete_CkJsonObject $jsonToken exit } # If successful, the resp.BodyStr contains something like this: # oauth_token=%3TiQRgQCRGPo7Xdk6G8QDSEzX0Jsy6sKNcULcDavAGgU%3D&oauth_token_secret=%7RrC9scEpzcwSEMy4vE7nodSzPLqfRINnTNY4voczyFM%3D puts [CkHttpResponse_bodyStr $resp] set sbRespBody [new_CkStringBuilder] CkHttpResponse_GetBodySb $resp $sbRespBody if {D]CkStringBuilder_ContentsEqual $sbRespBody "Access Token has been renewed" 0[/L} then { # The documentation at https://apisb.etrade.com/docs/api/authorization/renew_access_token.html # indicates that the response should be as described above. However, the response received when # trying to refresh a non-expired token was "Access Token has been renewed" puts "Keeping the same access token, but it's renewed..." delete_CkHttp $http delete_CkJsonObject $jsonToken delete_CkStringBuilder $sbRespBody exit } set hashTab [new_CkHashtable] CkHashtable_AddQueryParams $hashTab [CkHttpResponse_bodyStr $resp] set accessToken [CkHashtable_lookupStr $hashTab "oauth_token"] set accessTokenSecret [CkHashtable_lookupStr $hashTab "oauth_token_secret"] delete_CkHttpResponse $resp # The access token + secret is what should be saved and used for # subsequent REST API calls. puts "Access Token = $accessToken" puts "Access Token Secret = $accessTokenSecret" # Save this access token for future calls. # Just in case we need user_id and screen_name, save those also.. set json [new_CkJsonObject] CkJsonObject_AppendString $json "oauth_token" $accessToken CkJsonObject_AppendString $json "oauth_token_secret" $accessTokenSecret set fac [new_CkFileAccess] CkFileAccess_WriteEntireTextFile $fac "qa_data/tokens/etrade.json" [CkJsonObject_emit $json] "utf-8" 0 puts "Success." delete_CkHttp $http delete_CkJsonObject $jsonToken delete_CkStringBuilder $sbRespBody delete_CkHashtable $hashTab delete_CkJsonObject $json delete_CkFileAccess $fac |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.