Sample code for 30+ languages & platforms
PureBasic

Quickbooks Revoke OAuth2 Token

See more QuickBooks Examples

Demonstrates how to revoke a QuickBooks OAuth2 access token.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ; This example assumes we previously obtained an OAuth2 access token for QuickBooks.

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

    success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/qb-access-token.json")
    If success <> 1
        Debug "Failed to load qb-access-token.json"
        CkJsonObject::ckDispose(jsonToken)
        ProcedureReturn
    EndIf

    ; The access token JSON looks something like this:

    ; {
    ;   "expires_in": 3600,
    ;   "x_refresh_token_expires_in": 8726400,
    ;   "refresh_token": "L011546037639r ... 3vR2DrbOmg0Sdagw",
    ;   "access_token": "eyJlbmMiOiJBMTI4Q0 ... oETJEMbeggg",
    ;   "token_type": "bearer"
    ; }

    ; This code sends the following request:

    ; POST https://developer.api.intuit.com/v2/oauth2/tokens/revoke HTTP/1.1
    ; Accept: application/json
    ; Authorization: Basic UTM0dVB...wM1d2
    ; Content-Type: application/json
    ; 
    ; {
    ;     "token": "{bearerToken or refreshToken}"
    ; }

    ; Use this online tool to generate HTTP code from a sample request: 
    ; Generate Code from a Sample HTTP Request

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

    CkHttp::ckSetRequestHeader(http,"Accept","application/json")
    CkHttp::setCkBasicAuth(http, 1)
    CkHttp::setCkLogin(http, "QUICKBOOKS-CLIENT-ID")
    CkHttp::setCkPassword(http, "QUICKBOOKS-CLIENT-SECRET")

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

    CkJsonObject::ckUpdateString(json,"token",CkJsonObject::ckStringOf(jsonToken,"access_token"))

    url.s = "https://developer.api.intuit.com/v2/oauth2/tokens/revoke"
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST",url,json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkJsonObject::ckDispose(jsonToken)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))
    Debug "Response body:"
    Debug CkHttpResponse::ckBodyStr(resp)


    CkJsonObject::ckDispose(jsonToken)
    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)


    ProcedureReturn
EndProcedure