kestrel462
kestrel462

Reputation: 31

Google Contact API v3 - Can't create name/title when creating contacts

I'm using Google Contacts API v3 docs, OAuth Playground 2.0.

I'm able to pull all contacts via a get request. I can use POST to create a new contact but can't seem to populate the name fields, among others. The email and phone number populate fine.

I've been using atom/xml in the request body verbatim from the Contacts API v3 doc as below.

    <atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
    xmlns:gd='http://schemas.google.com/g/2005'>
  <atom:category scheme='http://schemas.google.com/g/2005#kind'
    term='http://schemas.google.com/contact/2008#contact'/>
  <gd:name>
     <gd:givenName>Elizabeth</gd:givenName>
     <gd:familyName>Bennet</gd:familyName>
     <gd:fullName>Elizabeth Bennet</gd:fullName>
  </gd:name>
  <atom:content type='text'>Notes</atom:content>
  <gd:email rel='http://schemas.google.com/g/2005#work'
    primary='true'
    address='[email protected]' displayName='E. Bennet'/>
  <gd:email rel='http://schemas.google.com/g/2005#home'
    address='[email protected]'/>
  <gd:phoneNumber rel='http://schemas.google.com/g/2005#work'
    primary='true'>
    (206)555-1212
  </gd:phoneNumber>
  <gd:phoneNumber rel='http://schemas.google.com/g/2005#home'>
    (206)555-1213
  </gd:phoneNumber>
  <gd:im address='[email protected]'
    protocol='http://schemas.google.com/g/2005#GOOGLE_TALK'
    primary='true'
    rel='http://schemas.google.com/g/2005#home'/>
  <gd:structuredPostalAddress
      rel='http://schemas.google.com/g/2005#work'
      primary='true'>
    <gd:city>Mountain View</gd:city>
    <gd:street>1600 Amphitheatre Pkwy</gd:street>
    <gd:region>CA</gd:region>
    <gd:postcode>94043</gd:postcode>
    <gd:country>United States</gd:country>
    <gd:formattedAddress>
      1600 Amphitheatre Pkwy Mountain View
    </gd:formattedAddress>
  </gd:structuredPostalAddress>
</atom:entry>

Any help is much appreciated, thanks.

Upvotes: 3

Views: 977

Answers (2)

emraz
emraz

Reputation: 1613

Yes you must need to add GData-Version to your HTTP request Header:

[request setValue:@"3.0" forHTTPHeaderField:@"GData-Version"];

Upvotes: 0

pettys
pettys

Reputation: 2468

I got stung by this, too. I was neglecting to add this HTTP Header to the request:

GData-Version: 3.0

Before v3, the way to indicate the name was <atom:title>Full Name</atom:title> instead of <gd:name>...</gd:name>. But I guess it's better to just add the header.

Upvotes: 5

Related Questions