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) Get eBay Application TokenThis example shows how to request an eBay Application token.
load ./chilkat.dll # This example assumes the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # See the Ebay documentation about Access token types # Also see the Ebay documentation about client credentials grant flow set http [new_CkHttp] # If using the sandbox, the target endpoint will be: # POST https://api.sandbox.ebay.com/identity/v1/oauth2/token # If using the production (live) system, the target endpoint will be: # POST https://api.ebay.com/identity/v1/oauth2/token # The eBay client_id and client_secret needs to be sent # in a Basic Authorization request header, which has this format: # Authorization: Basic <B64_encoded_oauth_credentials> # Chilkat takes care of it. You only need to set the Login = client_id, # and password = client_secret, and indicate you want "Basic" HTTP Authorization. CkHttp_put_Login $http "EBAY_CLIENT_ID" CkHttp_put_Password $http "EBAY_CLIENT_SECRET" CkHttp_put_BasicAuth $http 1 # Let's do the following POST: # HTTP method: POST # URL (Sandbox): https://api.sandbox.ebay.com/identity/v1/oauth2/token # # HTTP headers: # Content-Type = application/x-www-form-urlencoded # Authorization = Basic <B64-encoded-oauth-credentials> # # Request body (wrapped for readability): # grant_type=client_credentials& # redirect_uri=<RuName-value>& # scope=<SPACE separated list of scopes> # # Create an HttpRequest object to hold the request params. set req [new_CkHttpRequest] CkHttpRequest_put_HttpVerb $req "POST" CkHttpRequest_AddParam $req "grant_type" "client_credentials" # The scope query param indicates the access to be provided by the token. # Multiple scopes can be specified by separating each with a SPACE char. # See the Ebay OAuth scopes documentation CkHttpRequest_AddParam $req "scope" "https://api.ebay.com/oauth/api_scope" # (The PostUrlEncoded method automatically sets the Content-Type header equal to "application/x-www-form-urlencoded") set endPoint "https://api.sandbox.ebay.com/identity/v1/oauth2/token" # resp is a CkHttpResponse set resp [CkHttp_PostUrlEncoded $http $endPoint $req] if {[CkHttp_get_LastMethodSuccess $http] != 1} then { puts [CkHttp_lastErrorText $http] delete_CkHttp $http delete_CkHttpRequest $req exit } # The response is JSON.. set json [new_CkJsonObject] CkJsonObject_Load $json [CkHttpResponse_bodyStr $resp] CkJsonObject_put_EmitCompact $json 0 # If the response status code is not 200, then it failed. puts "Response status code = [CkHttpResponse_get_StatusCode $resp]" if {[CkHttpResponse_get_StatusCode $resp] != 200} then { puts [CkJsonObject_emit $json] puts "Failed." delete_CkHttp $http delete_CkHttpRequest $req delete_CkJsonObject $json exit } # We successfully retrieved an eBay access token. # The actual access token string can be parsed from the JSON like this: set accessToken [CkJsonObject_stringOf $json "access_token"] # This application token is only valid for 7200 seconds (2 hours). We'll want to refresh # it before it expires. (There is an online example for that..) # For now, let's save the JSON to a file for our application to use. # But before doing that, let's add to the JSON an expiration timestamp # so we know when to refresh the token. set dtExpire [new_CkDateTime] CkDateTime_SetFromCurrentSystemTime $dtExpire CkDateTime_AddSeconds $dtExpire [CkJsonObject_IntOf $json "expires_in"] CkJsonObject_AppendString $json "expire_time" [CkDateTime_getAsTimestamp $dtExpire 0] # Persist the JSON to a file. set fac [new_CkFileAccess] set success [CkFileAccess_WriteEntireTextFile $fac "qa_data/tokens/ebay.json" [CkJsonObject_emit $json] "utf-8" 0] if {$success != 1} then { puts [CkFileAccess_lastErrorText $fac] puts "Failed to save eBay Application token to file." delete_CkHttp $http delete_CkHttpRequest $req delete_CkJsonObject $json delete_CkDateTime $dtExpire delete_CkFileAccess $fac exit } puts [CkJsonObject_emit $json] puts "Success." # The output of this example is: # { # "access_token": "v^1.1#i^1#p^1#I^3#r^0# ... Ajp1BQhJDgAA", # "token_type": "Application Access Token", # "expires_in": 7200, # "refresh_token": "N/A", # "expire_time": "2017-04-16T14:44:20Z" # } # # Success. # delete_CkHttp $http delete_CkHttpRequest $req delete_CkJsonObject $json delete_CkDateTime $dtExpire delete_CkFileAccess $fac |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.