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

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