Sample code for 30+ languages & platforms
Xbase++

Google People API - List the User's Contacts

See more Google People Examples

Gets a list of people in the user's contacts.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oJsonToken
LOCAL oHttp
LOCAL oSbResponseBody
LOCAL oJson
LOCAL cResourceName
LOCAL cEtag
LOCAL j
LOCAL nCount_j
LOCAL nMetadataPrimary
LOCAL cMetadataSourceType
LOCAL cMetadataSourceId
LOCAL cDisplayName
LOCAL cFamilyName
LOCAL cGivenName
LOCAL cDisplayNameLastFirst
LOCAL cUnstructuredName
LOCAL cValue
LOCAL cFormattedValue
LOCAL cStreetAddress
LOCAL cCity
LOCAL cRegion
LOCAL cPostalCode
LOCAL cCountry
LOCAL cCountryCode
LOCAL nTotalPeople
LOCAL nTotalItems
LOCAL i
LOCAL nCount_i

nSuccess := 0

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

//  It is assumed we previously obtained an OAuth2 access token.
//  This example loads the JSON access token file 

//  originally obtained by this example: Get Google People API OAuth2 Access Token
//  or refreshed by this example: Refresh Google People API OAuth2 Access Token

oJsonToken := CreateObject("Chilkat.JsonObject")
nSuccess := oJsonToken:LoadFile("qa_data/tokens/googlePeople.json")
IF (nSuccess != 1)
    ? "Failed to load googleContacts.json"
    oJsonToken:destroy()
    RETURN
ENDIF

oHttp := CreateObject("Chilkat.Http")

oHttp:AuthToken := oJsonToken:StringOf("access_token")

oSbResponseBody := CreateObject("Chilkat.StringBuilder")
nSuccess := oHttp:QuickGetSb("https://people.googleapis.com/v1/people/me/connections?personFields=names,addresses,emailAddresses", oSbResponseBody)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    ? oSbResponseBody:GetAsString()
    oJsonToken:destroy()
    oHttp:destroy()
    oSbResponseBody:destroy()
    RETURN
ENDIF

//  Sample JSON Response

//  Use this online tool to generate parsing code from sample JSON: 
//  Generate Parsing Code from JSON

//  {
//    "connections": [
//      {
//        "resourceName": "people/c8871101035606120608",
//        "etag": "%EgkBAj0JQhBANy4aBAECBQciDERLSGdVTFNPbzNJPQ==",
//        "names": [
//          {
//            "metadata": {
//              "primary": true,
//              "source": {
//                "type": "CONTACT",
//                "id": "7b1c7b6409e718a0"
//              }
//            },
//            "displayName": "Chilkat Cloud",
//            "familyName": "Cloud",
//            "givenName": "Chilkat",
//            "displayNameLastFirst": "Cloud, Chilkat",
//            "unstructuredName": "Chilkat Cloud"
//          }
//        ],
//        "emailAddresses": [
//          {
//            "metadata": {
//              "primary": true,
//              "source": {
//                "type": "CONTACT",
//                "id": "7b1c7b6409e718a0"
//              }
//            },
//            "value": "support@***.com"
//          }
//        ]
//      },
//      {
//        "resourceName": "people/c7607335470312011517",
//        "etag": "%EgkBAj0JQhBANy4aBAECBQciDGZETUtHVTVMazI4PQ==",
//        "names": [
//          {
//            "metadata": {
//              "primary": true,
//              "source": {
//                "type": "CONTACT",
//                "id": "6992af4e0b2d36fd"
//              }
//            },
//            "displayName": "Matt Smith",
//            "familyName": "Smith",
//            "givenName": "Matt",
//            "displayNameLastFirst": "Smith, Matt",
//            "unstructuredName": "Matt Smith"
//          }
//        ],
//        "addresses": [
//          {
//            "metadata": {
//              "primary": true,
//              "source": {
//                "type": "CONTACT",
//                "id": "6992af4e0b2d36fd"
//              }
//            },
//            "formattedValue": "2222 E Foorest Ave\nWheaton, IL 60999\nUS",
//            "streetAddress": "2222 E Foorest Ave",
//            "city": "Wheaton",
//            "region": "IL",
//            "postalCode": "60999",
//            "country": "US",
//            "countryCode": "US"
//          }
//        ],
//        "emailAddresses": [
//          {
//            "metadata": {
//              "primary": true,
//              "source": {
//                "type": "CONTACT",
//                "id": "6992af4e0b2d36fd"
//              }
//            },
//            "value": "matt@***.com"
//          },
//          {
//            "metadata": {
//              "source": {
//                "type": "CONTACT",
//                "id": "6992af4e0b2d36fd"
//              }
//            },
//            "value": "admin@***.com"
//          }
//        ]
//      }
//    ],
//    "totalPeople": 2,
//    "totalItems": 2
//  }

oJson := CreateObject("Chilkat.JsonObject")
oJson:EmitCompact := 0
oJson:Load(oSbResponseBody:GetAsString())
? oJson:Emit()

nTotalPeople := oJson:IntOf("totalPeople")
nTotalItems := oJson:IntOf("totalItems")
i := 0
nCount_i := oJson:SizeOfArray("connections")
DO WHILE i < nCount_i
    oJson:I := i
    cResourceName := oJson:StringOf("connections[i].resourceName")
    cEtag := oJson:StringOf("connections[i].etag")
    j := 0
    nCount_j := oJson:SizeOfArray("connections[i].names")
    DO WHILE j < nCount_j
        oJson:J := j
        nMetadataPrimary := oJson:BoolOf("connections[i].names[j].metadata.primary")
        cMetadataSourceType := oJson:StringOf("connections[i].names[j].metadata.source.type")
        cMetadataSourceId := oJson:StringOf("connections[i].names[j].metadata.source.id")
        cDisplayName := oJson:StringOf("connections[i].names[j].displayName")
        cFamilyName := oJson:StringOf("connections[i].names[j].familyName")
        cGivenName := oJson:StringOf("connections[i].names[j].givenName")
        cDisplayNameLastFirst := oJson:StringOf("connections[i].names[j].displayNameLastFirst")
        cUnstructuredName := oJson:StringOf("connections[i].names[j].unstructuredName")
        j := j + 1
    ENDDO
    j := 0
    nCount_j := oJson:SizeOfArray("connections[i].emailAddresses")
    DO WHILE j < nCount_j
        oJson:J := j
        nMetadataPrimary := oJson:BoolOf("connections[i].emailAddresses[j].metadata.primary")
        cMetadataSourceType := oJson:StringOf("connections[i].emailAddresses[j].metadata.source.type")
        cMetadataSourceId := oJson:StringOf("connections[i].emailAddresses[j].metadata.source.id")
        cValue := oJson:StringOf("connections[i].emailAddresses[j].value")
        j := j + 1
    ENDDO
    j := 0
    nCount_j := oJson:SizeOfArray("connections[i].addresses")
    DO WHILE j < nCount_j
        oJson:J := j
        nMetadataPrimary := oJson:BoolOf("connections[i].addresses[j].metadata.primary")
        cMetadataSourceType := oJson:StringOf("connections[i].addresses[j].metadata.source.type")
        cMetadataSourceId := oJson:StringOf("connections[i].addresses[j].metadata.source.id")
        cFormattedValue := oJson:StringOf("connections[i].addresses[j].formattedValue")
        cStreetAddress := oJson:StringOf("connections[i].addresses[j].streetAddress")
        cCity := oJson:StringOf("connections[i].addresses[j].city")
        cRegion := oJson:StringOf("connections[i].addresses[j].region")
        cPostalCode := oJson:StringOf("connections[i].addresses[j].postalCode")
        cCountry := oJson:StringOf("connections[i].addresses[j].country")
        cCountryCode := oJson:StringOf("connections[i].addresses[j].countryCode")
        j := j + 1
    ENDDO
    i := i + 1
ENDDO

oJsonToken:destroy()
oHttp:destroy()
oSbResponseBody:destroy()
oJson:destroy()