Sample code for 30+ languages & platforms
PureBasic

Shopify Private Authentication for Private Apps

See more Shopify Examples

Shopify private authentication is for interacting with your own store through private applications. It uses HTTP "Basic" authentication with your Shopify private application key and secret key.

This example demonstrates how to send a private authenticated request using Chilkat Http, and then the same using Chilkat Rest.

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

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

    ; First demonstrate sending a simple request using Shopify private authentication w/ the Chilkat Http API.
    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; To use HTTP Basic Authentication with any HTTP request, we simply set the Login, Password, and BasicAuth properties.
    ; Important: All HTTP requests using Basic authentication must be over SSL/TLS.
    CkHttp::setCkLogin(http, "SHOPIFY_PRIVATE_API_KEY")
    CkHttp::setCkPassword(http, "SHOPIFY_PRIVATE_API_SECRET_KEY")
    CkHttp::setCkBasicAuth(http, 1)

    ; Make sure to replace "chilkat" with your store name.
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpNoBody(http,"GET","https://chilkat.myshopify.com/admin/products.json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Examine the response code.
    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug "Received error response code: " + Str(CkHttpResponse::ckStatusCode(resp))
        Debug "Response body:"
        Debug CkHttpResponse::ckBodyStr(resp)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Success.
    Debug "Success."

    ; Examine the JSON response 
    sbJson.i = CkStringBuilder::ckCreate()
    If sbJson.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpResponse::ckGetBodySb(resp,sbJson)
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(json,sbJson)
    CkJsonObject::setCkEmitCompact(json, 0)
    Debug CkJsonObject::ckEmit(json)

    ; -------------------------------------------------
    ; Now let's do the same using the Chilkat Rest API.
    rest.i = CkRest::ckCreate()
    If rest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Provide the private app credentials:
    CkRest::ckSetAuthBasic(rest,"SHOPIFY_PRIVATE_API_KEY","SHOPIFY_PRIVATE_API_SECRET_KEY")

    ; Connect to the shopify server.
    bTls.i = 1
    port.i = 443
    bAutoReconnect.i = 1
    ; Make sure to replace "chilkat" with your store name.
    success = CkRest::ckConnect(rest,"chilkat.myshopify.com",port,bTls,bAutoReconnect)
    If success = 0
        Debug CkRest::ckLastErrorText(rest)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        CkStringBuilder::ckDispose(sbJson)
        CkJsonObject::ckDispose(json)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    CkStringBuilder::ckClear(sbJson)
    success = CkRest::ckFullRequestNoBodySb(rest,"GET","/admin/products.json",sbJson)
    If CkRest::ckLastMethodSuccess(rest) = 0
        Debug CkRest::ckLastErrorText(rest)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        CkStringBuilder::ckDispose(sbJson)
        CkJsonObject::ckDispose(json)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    If CkRest::ckResponseStatusCode(rest) <> 200
        Debug "Received error response code: " + Str(CkRest::ckResponseStatusCode(rest))
        Debug "Response body:"
        Debug CkStringBuilder::ckGetAsString(sbJson)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        CkStringBuilder::ckDispose(sbJson)
        CkJsonObject::ckDispose(json)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    ; Success...
    CkJsonObject::ckLoadSb(json,sbJson)
    Debug CkJsonObject::ckEmit(json)


    CkHttp::ckDispose(http)
    CkHttpResponse::ckDispose(resp)
    CkStringBuilder::ckDispose(sbJson)
    CkJsonObject::ckDispose(json)
    CkRest::ckDispose(rest)


    ProcedureReturn
EndProcedure