Sample code for 30+ languages & platforms
AutoIt Requires Chilkat v11.0.0+

Get eBay Application Token

See more eBay Examples

This example shows how to request an eBay Application token.

Chilkat AutoIt Downloads

AutoIt
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.
;