DataFlex
DataFlex
Get eBay Application Token
See more eBay Examples
This example shows how to request an eBay Application token.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
Variant vReq
Handle hoReq
String sEndPoint
Variant vResp
Handle hoResp
Handle hoJson
String sAccessToken
Handle hoDtExpire
Handle hoFac
String sTemp1
Integer iTemp1
Move False To iSuccess
// 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
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// 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.
Set ComLogin Of hoHttp To "EBAY_CLIENT_ID"
Set ComPassword Of hoHttp To "EBAY_CLIENT_SECRET"
Set ComBasicAuth Of hoHttp To 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.
Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
If (Not(IsComObjectCreated(hoReq))) Begin
Send CreateComObject of hoReq
End
Set ComHttpVerb Of hoReq To "POST"
Send ComAddParam To hoReq "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
Send ComAddParam To hoReq "scope" "https://api.ebay.com/oauth/api_scope"
Move "https://api.sandbox.ebay.com/identity/v1/oauth2/token" To sEndPoint
Set ComContentType Of hoReq To "application/x-www-form-urlencoded"
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoReq to vReq
Get pvComObject of hoResp to vResp
Get ComHttpReq Of hoHttp sEndPoint vReq vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
// The response is JSON..
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComBodyStr Of hoResp To sTemp1
Get ComLoad Of hoJson sTemp1 To iSuccess
Set ComEmitCompact Of hoJson To False
// If the response status code is not 200, then it failed.
Get ComStatusCode Of hoResp To iTemp1
Showln "Response status code = " iTemp1
Get ComStatusCode Of hoResp To iTemp1
If (iTemp1 <> 200) Begin
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
Showln "Failed."
Procedure_Return
End
// We successfully retrieved an eBay access token.
// The actual access token string can be parsed from the JSON like this:
Get ComStringOf Of hoJson "access_token" To sAccessToken
// 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.
Get Create (RefClass(cComCkDateTime)) To hoDtExpire
If (Not(IsComObjectCreated(hoDtExpire))) Begin
Send CreateComObject of hoDtExpire
End
Get ComSetFromCurrentSystemTime Of hoDtExpire To iSuccess
Get ComIntOf Of hoJson "expires_in" To iTemp1
Get ComAddSeconds Of hoDtExpire iTemp1 To iSuccess
Get ComGetAsTimestamp Of hoDtExpire False To sTemp1
Get ComAppendString Of hoJson "expire_time" sTemp1 To iSuccess
// Persist the JSON to a file.
Get Create (RefClass(cComCkFileAccess)) To hoFac
If (Not(IsComObjectCreated(hoFac))) Begin
Send CreateComObject of hoFac
End
Get ComEmit Of hoJson To sTemp1
Get ComWriteEntireTextFile Of hoFac "qa_data/tokens/ebay.json" sTemp1 "utf-8" False To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoFac To sTemp1
Showln sTemp1
Showln "Failed to save eBay Application token to file."
Procedure_Return
End
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
Showln "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.
//
End_Procedure