Skip to content

Instantly share code, notes, and snippets.

@samkit5495
Last active March 15, 2024 14:37
Show Gist options
  • Save samkit5495/ff8e2a6644363cadaec3fa22ddf38c90 to your computer and use it in GitHub Desktop.
Save samkit5495/ff8e2a6644363cadaec3fa22ddf38c90 to your computer and use it in GitHub Desktop.
Code to create a contact using Google's People API
from __future__ import print_function
import httplib2
import os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/people.googleapis.com-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/contacts'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'People API Python Quickstart'
def get_credentials():
"""Gets valid user credentials from storage.
If nothing has been stored, or if the stored credentials are invalid,
the OAuth2 flow is completed to obtain the new credentials.
Returns:
Credentials, the obtained credential.
"""
home_dir = os.path.expanduser('./')
credential_dir = os.path.join(home_dir, '.credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
'people.googleapis.com-python-quickstart.json')
store = Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = APPLICATION_NAME
if flags:
credentials = tools.run_flow(flow, store, flags)
else: # Needed only for compatibility with Python 2.6
credentials = tools.run(flow, store)
print('Storing credentials to ' + credential_path)
return credentials
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('people', 'v1', http=http,
discoveryServiceUrl='https://people.googleapis.com/$discovery/rest')
service.people().createContact(body={
"names": [
{
"givenName": "Samkit"
}
],
"phoneNumbers": [
{
'value': "8600086024"
}
],
"emailAddresses": [
{
'value': 'samkit5495@gmail.com'
}
]
}).execute()
@techmodule
Copy link

Hi
i also make the delete fuction but it is not work :(

def delete_contacts_with_resourceName(creds,http,number_of_contact):
    # Call the People API
    service = build('people', 'v1', credentials=creds)
    print('Ban dang xoa', number_of_contactcontact, 'contacts')

    results = service.people().connections().list(
        resourceName='people/me',
        pageSize=number_of_contactofcontact,
        personFields='names,emailAddresses,phoneNumbers,emailAddresses,addresses').execute()
    service = discovery.build('people', 'v1', http=http,
                              discoveryServiceUrl='https://people.googleapis.com/$discovery/rest')
    connections = results.get('connections', [])
    for person in connections:
        abcd = person.get('resourceName')
        service.people().deleteContact(resourceName={abcd}).execute()

@techmodule
Copy link

Dear, i used your new code in my localhost is ok? but after i deploy to server, it can not run? the link to authithencate not open in brower

@samkit5495
Copy link
Author

It's not developed for the remote servers, we can use this for console applications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment