Sample code for 30+ languages & platforms
Lua

Google People API - List the User's Contacts

See more Google People Examples

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

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- 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

local jsonToken = chilkat.JsonObject.new()
local success = jsonToken:load_file("qa_data/tokens/googlePeople.json")
if not success then
    print("Failed to load googleContacts.json")
    return
end

local http = chilkat.Http.new()

http.auth_token = jsonToken:string_of("access_token")

local sbResponseBody = chilkat.StringBuilder.new()
success = http:quick_get_sb("https://people.googleapis.com/v1/people/me/connections?personFields=names,addresses,emailAddresses", sbResponseBody)
if not success then
    print(http.last_error_text)
    print(sbResponseBody:get_as_string())
    return
end

-- 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
-- }

local json = chilkat.JsonObject.new()
json.emit_compact = false
json:load(sbResponseBody:get_as_string())
print(json:emit())

local resourceName = ""
local etag = ""
local j = 0
local count_j = 0
local metadataPrimary = false
local metadataSourceType = ""
local metadataSourceId = ""
local displayName = ""
local familyName = ""
local givenName = ""
local displayNameLastFirst = ""
local unstructuredName = ""
local value = ""
local formattedValue = ""
local streetAddress = ""
local city = ""
local region = ""
local postalCode = ""
local country = ""
local countryCode = ""

local totalPeople = json:int_of("totalPeople")
local totalItems = json:int_of("totalItems")
local i = 0
local count_i = json:size_of_array("connections")
while i < count_i do
    json.i = i
    resourceName = json:string_of("connections[i].resourceName")
    etag = json:string_of("connections[i].etag")
    j = 0
    count_j = json:size_of_array("connections[i].names")
    while j < count_j do
        json.j = j
        metadataPrimary = json:bool_of("connections[i].names[j].metadata.primary")
        metadataSourceType = json:string_of("connections[i].names[j].metadata.source.type")
        metadataSourceId = json:string_of("connections[i].names[j].metadata.source.id")
        displayName = json:string_of("connections[i].names[j].displayName")
        familyName = json:string_of("connections[i].names[j].familyName")
        givenName = json:string_of("connections[i].names[j].givenName")
        displayNameLastFirst = json:string_of("connections[i].names[j].displayNameLastFirst")
        unstructuredName = json:string_of("connections[i].names[j].unstructuredName")
        j = j + 1
    end

    j = 0
    count_j = json:size_of_array("connections[i].emailAddresses")
    while j < count_j do
        json.j = j
        metadataPrimary = json:bool_of("connections[i].emailAddresses[j].metadata.primary")
        metadataSourceType = json:string_of("connections[i].emailAddresses[j].metadata.source.type")
        metadataSourceId = json:string_of("connections[i].emailAddresses[j].metadata.source.id")
        value = json:string_of("connections[i].emailAddresses[j].value")
        j = j + 1
    end

    j = 0
    count_j = json:size_of_array("connections[i].addresses")
    while j < count_j do
        json.j = j
        metadataPrimary = json:bool_of("connections[i].addresses[j].metadata.primary")
        metadataSourceType = json:string_of("connections[i].addresses[j].metadata.source.type")
        metadataSourceId = json:string_of("connections[i].addresses[j].metadata.source.id")
        formattedValue = json:string_of("connections[i].addresses[j].formattedValue")
        streetAddress = json:string_of("connections[i].addresses[j].streetAddress")
        city = json:string_of("connections[i].addresses[j].city")
        region = json:string_of("connections[i].addresses[j].region")
        postalCode = json:string_of("connections[i].addresses[j].postalCode")
        country = json:string_of("connections[i].addresses[j].country")
        countryCode = json:string_of("connections[i].addresses[j].countryCode")
        j = j + 1
    end

    i = i + 1
end