Sample code for 30+ languages & platforms
PureBasic

Refresh eBay Application Access Token

See more eBay Examples

This example shows how to get a new eBay REST API access token when the original is close to expiration.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkOAuth2.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    ; The previously fetched eBay access token looks like this:

    ; {
    ;   "access_token": "v^1.1#i^1# ... HwSAAA=",
    ;   "expires_in": 7200,
    ;   "refresh_token": "v^1.1#i^1# ... FXjEyODQ=",
    ;   "refresh_token_expires_in": 47304000,
    ;   "token_type": "User Access Token"
    ; }

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkJsonObject::ckLoadFile(json,"qa_data/tokens/ebay-access-token.json")
    If success = 0
        Debug "Failed to load the existing ebay access token JSON."
        CkJsonObject::ckDispose(json)
        ProcedureReturn
    EndIf

    oauth2.i = CkOAuth2::ckCreate()
    If oauth2.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkOAuth2::setCkTokenEndpoint(oauth2, "https://api.sandbox.ebay.com/identity/v1/oauth2/token")

    ; Replace these with actual values.
    CkOAuth2::setCkClientId(oauth2, "EBAY_CLIENT_ID")
    CkOAuth2::setCkClientSecret(oauth2, "EBAY_CLIENT_SECRET")

    ; Get the "refresh_token"
    CkOAuth2::setCkRefreshToken(oauth2, CkJsonObject::ckStringOf(json,"refresh_token"))

    ; Send the HTTP POST to refresh the access token..
    success = CkOAuth2::ckRefreshAccessToken(oauth2)
    If success = 0
        Debug CkOAuth2::ckLastErrorText(oauth2)
        CkJsonObject::ckDispose(json)
        CkOAuth2::ckDispose(oauth2)
        ProcedureReturn
    EndIf

    ; Load the access token response into the JSON object 
    CkJsonObject::ckLoad(json,CkOAuth2::ckAccessTokenResponse(oauth2))

    ; Save the new JSON access token response to a file.
    ; The access + refresh tokens contained in this JSON will be needed for the next refresh.
    CkJsonObject::setCkEmitCompact(json, 0)
    CkJsonObject::ckWriteFile(json,"qa_data/tokens/ebay-access-token.json")

    Debug "OAuth2 authorization granted!"
    Debug "New Access Token = " + CkOAuth2::ckAccessToken(oauth2)


    CkJsonObject::ckDispose(json)
    CkOAuth2::ckDispose(oauth2)


    ProcedureReturn
EndProcedure