AutoIt
AutoIt
Get eBay Application Token
See more eBay Examples
This example shows how to request an eBay Application token.Chilkat AutoIt Downloads
Local $bSuccess = False
; 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
$oHttp = ObjCreate("Chilkat.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.
$oHttp.Login = "EBAY_CLIENT_ID"
$oHttp.Password = "EBAY_CLIENT_SECRET"
$oHttp.BasicAuth = True
; 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.
$oReq = ObjCreate("Chilkat.HttpRequest")
$oReq.HttpVerb = "POST"
$oReq.AddParam "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
$oReq.AddParam "scope","https://api.ebay.com/oauth/api_scope"
Local $sEndPoint = "https://api.sandbox.ebay.com/identity/v1/oauth2/token"
$oReq.ContentType = "application/x-www-form-urlencoded"
$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpReq($sEndPoint,$oReq,$oResp)
If ($bSuccess = False) Then
ConsoleWrite($oHttp.LastErrorText & @CRLF)
Exit
EndIf
; The response is JSON..
$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($oResp.BodyStr)
$oJson.EmitCompact = False
; If the response status code is not 200, then it failed.
ConsoleWrite("Response status code = " & $oResp.StatusCode & @CRLF)
If ($oResp.StatusCode <> 200) Then
ConsoleWrite($oJson.Emit() & @CRLF)
ConsoleWrite("Failed." & @CRLF)
Exit
EndIf
; We successfully retrieved an eBay access token.
; The actual access token string can be parsed from the JSON like this:
Local $sAccessToken = $oJson.StringOf("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.
$oDtExpire = ObjCreate("Chilkat.CkDateTime")
$oDtExpire.SetFromCurrentSystemTime()
$oDtExpire.AddSeconds($oJson.IntOf("expires_in"))
$oJson.AppendString("expire_time",$oDtExpire.GetAsTimestamp(False))
; Persist the JSON to a file.
$oFac = ObjCreate("Chilkat.FileAccess")
$bSuccess = $oFac.WriteEntireTextFile("qa_data/tokens/ebay.json",$oJson.Emit(),"utf-8",False)
If ($bSuccess <> True) Then
ConsoleWrite($oFac.LastErrorText & @CRLF)
ConsoleWrite("Failed to save eBay Application token to file." & @CRLF)
Exit
EndIf
ConsoleWrite($oJson.Emit() & @CRLF)
ConsoleWrite("Success." & @CRLF)
; 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.
;