Thank you Mike, that helped me understand. I've been working with ChilKat and there's something wrong that probably used to work desktop or v17, but it no longer works in v18 and v19. You get a token but it's not where it's supposed to be. Chilkat would have made this all easier or so I thought. I needed to persure bot avenues. In the meantime, I'm now using v19.0 I was wondering if you could take a look at this code and tell me what I'm doing wrong. Your code works generating the token, then you had an example of retrieving a calendarlist that worked well but it wasn't sending any Content (JSON) along with it. I'm not asking you to write nthis for me, just wonder if you see something out of whack. The JSON format reported on showln looks good. This is just a modified Procedure GoogleOp from your example code. This is using the new v19.0 JSON commands

    Procedure GoogleOp
        String  sOp sPath sVerb sContent sToken sResp
        Integer iOK
        WebGet wpsAccessToken of oOAuth to sToken
        If (sToken = "") Begin
            Send ShowInfoBox "You need to log into Google before testing operations" "Error"
        WebGet psValue of oOperation    to sOp
        // Create JSON
        Handle hojJson hojDetail1 hojDetail2
        String sjJson

        Get Create (RefClass(cJsonObject)) to hojJson
        Send InitializeJsonType of hojJson jsonTypeObject

        Send SetMemberValue of hojJson "summary" jsonTypeString "Test Event"

        //  Initialize detail object
        Get Create (RefClass(cJsonObject)) to hojDetail1
        Send InitializeJsonType of hojDetail1 jsonTypeObject 
        Send SetMemberValue of hojDetail1 "dateTime" jsonTypeString "2017-08-07T10:00:00.0z"
        Send SetMember of hojJson "start" hojDetail1
        Send Destroy of hojDetail1

        Get Create (RefClass(cJsonObject)) to hojDetail2
        Send InitializeJsonType of hojDetail2 jsonTypeObject 
        Send SetMemberValue of hojDetail2 "dateTime" jsonTypeString "2017-08-07T10:30:00.0z"
        Send SetMember of hojJson "end" hojDetail2
        Send Destroy of hojDetail2

        //  Generate JSON string    
        Set peWhiteSpace of hoJJson to jpWhitespace_Spaced
        Get Stringify of hoJJson to sjJson

        Showln sjJson
        Send Destroy of hoJJson
        Move (Trim(sOp))                to sOP
        WebGet psValue of oVerb         to sVerb
        //WebGet psValue of oContent      to sContent
        Move sjJson to sContent                                        //This is pretty much all that was changed
        If (Pos("?", sOp) > 0) Begin
            Move (sOp + "&access_token=" + sToken)  to sPath
        Else Begin
            Move (sOp + "?access_token=" + sToken)  to sPath
        WebSet psValue of oPath         to (If((peTransferFlags(oGglHttp(Self)) iand ifSecure), "https://", "http://") + ;
                                            psRemoteHost(oGglHttp(Self)) + "/" + sPath)

        Send Reset of oGglHttp
        Get HttpVerbAddrRequest of oGglHttp sPath (AddressOf(sContent)) (Length(sContent)) False sVerb to iOK
        If iOK Begin
            Get psData of oGglHttp to sResp
            Move 0 to WindowIndex
            WebSet pbRender of oResponseText to True
            WebSet pbRender of oResponseHTML to False
            WebSet psValue  of oResponseText to sResp
        Else Begin
            WebSet pbRender of oResponseText to True
            WebSet pbRender of oResponseHTML to False
            WebSet psValue  of oResponseText to "HTTP request failed"
        WebSet psValue of oRemains to (GrantLeft(oOAuth(Self)))
Here is the correct JSON taken from the Google API Explorer

//    "end": {
//         "dateTime": "2017-07-11T09:30:00.0z"
//     },
//    "start": {
//         "dateTime": "2017-07-11T09:00:00.0z"
//     },
//     "summary": "Big Event",

I also modified this window and this is tested in the API explorer, only works with %40 for the @ sign

            Object oOperation is a cWebForm
                Set piColumnSpan to 0
                Set psLabel to "Operation:"
                Set piMaxLength to 1000
                //Set psValue to "calendar/v3/users/me/calendarList"
                Set psValue to "calendar/v3/users/calendars/"  
Thanks again, it's majorly appreciated. Not many folks to discuss all this with you know?