Create a google contact with python3

南笙酒味 提交于 2020-01-13 16:20:44

问题


I would like to create a contact with the google api and python3

but gdata seemsnot to be compatible with python3. Like : AttributeError: 'function' object has no attribute 'func_name'

Does anyone have any sample that works on how to create contact with google api in python3 ?

thanks


回答1:


First, have you installed the gdata python client with pip, or with pip3? According to Google's repository, which says,

Python 3.3+ is also now supported! However, this library has not yet been > used as thoroughly with Python 3, so we'd recommend testing before deploying with Python 3 in production,

you can use pip3, like pip3 install google-api-python-client, to reinstall it. Once that's cleared up, see the below modified sample code-block for how to create a contact by just their Name, E-mail and Phone number with Python 3:

import atom.data
import gdata.data
import gdata.contacts.client
import gdata.contacts.data

gd_client = gdata.contacts.client.ContactsClient(source='YOUR_APPLICATION_NAME')

def create_contact(gd_client):
    new_contact = gdata.contacts.data.ContactEntry()

# Set the contact's name.
    new_contact.name = gdata.data.Name(
        given_name=gdata.data.GivenName(text='First'),
        family_name=gdata.data.FamilyName(text='Last'),
        full_name=gdata.data.FullName(text='Full'))
    new_contact.content = atom.data.Content(text='Notes')

# Set the contact's email addresses.
    new_contact.email.append(gdata.data.Email(address='handle@gmail.com',\
        primary='true', rel=gdata.data.WORK_REL, display_name='E. Bennet'))
    new_contact.email.append(gdata.data.Email(address='liz@example.com',\
        rel=gdata.data.HOME_REL))

# Set the contact's phone numbers.
    new_contact.phone_number.append(gdata.data.PhoneNumber(text='(206)555-1212',
        rel=gdata.data.WORK_REL, primary='true'))
    new_contact.phone_number.append(gdata.data.PhoneNumber(text='(206)555-1213',
        rel=gdata.data.HOME_REL))

# Send the contact data to the server.
    contact_entry = gd_client.CreateContact(new_contact)
    print ("Contact's ID: {}".format(contact_entry.id.text))
    return contact_entry



回答2:


For read-only access to Contacts, Google has built the new People API, which works just fine with Python3 in the google-api-python-client. However, for write access you'll need to use the older GData format.

The short answer to your question is that you won't be able to get GData to work with Python3 because the gdata-python-client is no longer maintained and never had Python3 support built in (see https://github.com/google/gdata-python-client/issues/29)

However, not all hope is lost! You can still query directly to Google's REST API. Specifically, to create a contact you need to work with the https://www.google.com/m8/feeds/contacts/{userEmail}/full route (see the Contacts API documentation for more information)

The appropriate way to work with the API directly is to submit a web request using something like Python's Requests module.

CREATE_ROUTE = 'https://www.google.com/m8/feeds/contacts/default/full'
FULL_PATH = CREATE_ROUTE + '?access_token=' + ACCESS_TOKEN

import requests
r = requests.get(FULL_PATH)
print(r.text)

Where ACCESS_TOKEN is the access token you got back from Google when you authorized your access (this can still be done using google-api-python-client)



来源:https://stackoverflow.com/questions/40320191/create-a-google-contact-with-python3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!