13
votes

I'm having a problem with the 2 APIs above. Given the next scenario: I have 2 different google accounts. One that doesn't use Google+ and a second account that uses Google+

When using Contacts API on the first account that doesn't use Google+ I can see all my contacts:

GET /m8/feeds/contacts/<email>/full

Same for the second account that uses Google+.

When I'm using People API for the first account that doesn't use Google+, I'm getting an empty response (actually I'm getting just the next sync token:

GET https://people.googleapis.com/v1/people/me/connections

With the next scope:

https://www.googleapis.com/auth/contacts

Returns:

{
  "nextSyncToken": "CMe6...."
}

The same call for the second account (with Google+) works like a charm

The only difference between the 2 accounts is Google+, is it possible that People API only works for accounts with Google+? Or is it something else that I'm missing

2
What scopes have the accounts authorized access for?abraham
Are you sure that your first account (non-Google+) has the same/similar connections as your second account (Google+)? Also, have you tried adding scope https://www.googleapis.com/auth/contacts.readonly?AL.
I also tried the https://www.googleapis.com/auth/contacts.readonly scope, got the same resultsshachar
@abraham I'm using https://www.google.com/feeds scope for the Contacts API and for the People API I tried https://www.googleapis.com/auth/contacts and https://www.googleapis.com/auth/contacts.readonlyshachar
seems Contacts API can't find in APIs Explorer now ,are you use the sample codes here ? :developers.google.com/google-apps/contacts/v3dx3906

2 Answers

25
votes

I found the difference between the 2 APIs and it has nothing to do with the fact that one of the accounts is connected to Google+ or not

People API will only fetch the contacts that are under the account "My contacts" contacts, while Contacts API will also fetch the other contacts lists ("Other contacts", "Most contacts", ...)

2
votes

The People API is the newer version.

From Google APIs related to People API page:

The Google Contacts API will be deprecated in the future. The People API is the recommended replacement for apps that read contact data.

It is also important to note that the People API does in fact allow the developer to use "other contacts" just like Contacts API did. In addition, when migrating you should not have to re-ask for user consent to the following:

Please see these links for further reading:

https://developers.google.com/people/related-apis (Contacts API vs People API) https://developers.google.com/people (Intro to People API)

I basically just copy/pasted most of this stuff but hopefully, some people find this helpful as I too was curious to find these answers :)