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
(Classic ASP) Refresh eBay Application Access TokenThis example shows how to get a new eBay REST API access token when the original is close to expiration.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <% ' This example assumes the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. ' If a new access token must be fetched, this example will save the JSON ' containing the token to a file. The contents of the JSON will look ' like this: ' { ' "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" ' } set json = Server.CreateObject("Chilkat_9_5_0.JsonObject") json.EmitCompact = 0 set dtExpire = Server.CreateObject("Chilkat_9_5_0.CkDateTime") ' First, we'll see if this file already exists from previously ' running this code. tokenFilePath = "qa_data/tokens/ebay.json" set fac = Server.CreateObject("Chilkat_9_5_0.FileAccess") If (fac.FileExists(tokenFilePath) = 1) Then success = json.LoadFile(tokenFilePath) ' Get the current date/time, then get the expire date/time from the JSON. set dtNow = Server.CreateObject("Chilkat_9_5_0.CkDateTime") success = dtNow.SetFromCurrentSystemTime() ' Add 30 seconds to dtNow so that we refresh if within 30 seconds of the expiration. success = dtNow.AddSeconds(30) success = dtExpire.SetFromTimestamp(json.StringOf("expire_time")) If (dtNow.GetAsUnixTime(0) < dtExpire.GetAsUnixTime(0)) Then ' The token has not yet expired. We can use the access token from this JSOn. Response.Write "<pre>" & Server.HTMLEncode( "Non-expired access token: " & json.StringOf("access_token")) & "</pre>" Response.End End If End If ' If we fall through to here, then either the existing access token expired, ' or we haven't yet fetched an access token for the first time. ' The remainder of this code snippet fetches the access token and saves ' it to the file. set http = Server.CreateObject("Chilkat_9_5_0.Http") ' 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. http.Login = "EBAY_CLIENT_ID" http.Password = "EBAY_CLIENT_SECRET" http.BasicAuth = 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=https://api.ebay.com/oauth/api_scope ' ' Create an HttpRequest object to hold the request params. set req = Server.CreateObject("Chilkat_9_5_0.HttpRequest") req.HttpVerb = "POST" req.AddParam "grant_type","client_credentials" ' (The RuName value that eBay assigns to your application.) req.AddParam "redirect_uri","EBAY_RUNAME_VALUE" req.AddParam "scope","https://api.ebay.com/oauth/api_scope" ' (The PostUrlEncoded method automatically sets the Content-Type header equal to "application/x-www-form-urlencoded") endPoint = "https://api.sandbox.ebay.com/identity/v1/oauth2/token" ' resp is a Chilkat_9_5_0.HttpResponse Set resp = http.PostUrlEncoded(endPoint,req) If (http.LastMethodSuccess <> 1) Then Response.Write "<pre>" & Server.HTMLEncode( http.LastErrorText) & "</pre>" Response.End End If ' The response is JSON.. success = json.Load(resp.BodyStr) ' If the response status code is not 200, then it failed. Response.Write "<pre>" & Server.HTMLEncode( "Response status code = " & resp.StatusCode) & "</pre>" If (resp.StatusCode <> 200) Then Response.Write "<pre>" & Server.HTMLEncode( json.Emit()) & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( "Failed.") & "</pre>" Response.End End If ' 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. success = dtExpire.SetFromCurrentSystemTime() success = dtExpire.AddSeconds(json.IntOf("expires_in")) success = json.AppendString("expire_time",dtExpire.GetAsTimestamp(0)) ' Persist the JSON to a file. success = fac.WriteEntireTextFile(tokenFilePath,json.Emit(),"utf-8",0) If (success <> 1) Then Response.Write "<pre>" & Server.HTMLEncode( fac.LastErrorText) & "</pre>" Response.Write "<pre>" & Server.HTMLEncode( "Failed to save eBay Application token to file.") & "</pre>" Response.End End If ' We successfully retrieved a new eBay access token. accessToken = json.StringOf("access_token") Response.Write "<pre>" & Server.HTMLEncode( "Use this new access token: " & accessToken) & "</pre>" %> </body> </html> |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.