Xbase++
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
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()