2
votes

I need to get contacts emails with Google People API, but can't find a way to do it in docs. Currently I'm making the following request:

request.get('https://people.googleapis.com/v1/people/me/connections?access_token=tokenHere',
    function (error, response, body) {
        console.log(body);
    });

And getting the following responce (I pin only the part of it, for example):

{
  "resourceName": "people/c1705421824339784415",
  "etag": "328OLZwdaiQ=",
  "metadata": {
    "sources": [
      {
        "type": "CONTACT",
        "id": "17aae01d0ff8b2df",
        "etag": "#328OLZwdaiQ="
      }
    ],
    "objectType": "PERSON"
  },
  "names": [
    {
      "metadata": {
        "primary": true,
        "source": {
          "type": "CONTACT",
          "id": "17aae01d0ff8b2df"
        }
      },
      "displayName": "testGoogleContact",
      "givenName": "testGoogleContact",
      "displayNameLastFirst": "testGoogleContact"
    }
  ]
}
4
That is under the Google Plus API I thinkMatejMecka
@UnknownDeveloper thanks, I was able to get user's profile with request https://www.googleapis.com/plus/v1/people/me?access_token=tokenHere, but I can't find a way to get contacts of user, is it possible with Google Plus API?snowfinch27
@UnknownDeveloper thanks again, looks like I already read that guide and I can't find a way to get user's contact's emails there, only currently authenticated user email, anyway, thank you for answer)snowfinch27

4 Answers

3
votes

To achieve this you need to use the Google Plus API: This is what I found on the Google Plus API Documentation page:

You can get an email address for the authenticated user by using the email scope.

The following JavaScript code example demonstrates how to:

Use Google+ Sign-In to authenticate the user and get a valid OAuth 2.0 access token.

Use the token to make an HTTP GET request to the

https://www.googleapis.com/plus/v1/people/me

REST endpoint. Parse the response and display the user's email address.

The JSON should like something like this:

 {"kind":"plus#person","etag":"\"xw0en60W6-NurXn4VBU-CMjSPEw/mjjYoraGfq3Wi-8Nee4F3k7GYrs\"","emails":[{"value":"**EMAIL**","type":"account"}],"objectType":"person","id":"Person ID","displayName":"FULL NAME","name":{"familyName":"LAST NAME","givenName":"NAME"},"url":"https://plus.google.com/USER","image":{"url":"https://lh5.googleusercontent.com/-RTcRn6jTuoI/AAAAAAAAAAI/AAAAAAAAEpg/Y6cMxfwtbQ4/photo.jpg?sz=50","isDefault":false},"placesLived":[{"value":"CITY","primary":true}],"isPlusUser":true,"verified":false,"cover":{"layout":"banner","coverPhoto":{"url":"https://lh3.googleusercontent.com/SybH-BjYW2ft1rzayamGLg_VwW7ocgnQ5cAxH3ROEpODvyaEODpYKW55gmAxCXDUvfKggQ4=s630-fcrop64=1,00002778ffffffff","height":626,"width":940},"coverInfo":{"topImageOffset":0,"leftImageOffset":0}},"result":{"kind":"plus#person","etag":"\"xw0en60W6-NurXn4VBU-CMjSPEw/mjjYoraGfq3Wi-8Nee4F3k7GYrs\"","emails":[{"value":"**EMAIL HERE**","type":"account"}],"objectType":"person","id":"116508277095473789406","displayName":"FULL NAME","name":{"familyName":"LAST NAME","givenName":"NAME"},"url":"https://plus.google.com/USER","image":{"url":"https://lh5.googleusercontent.com/-RTcRn6jTuoI/AAAAAAAAAAI/AAAAAAAAEpg/Y6cMxfwtbQ4/photo.jpg?sz=50","isDefault":false},"placesLived":[{"value":"CITY I LIVE","primary":true}],"isPlusUser":true,"verified":false,"cover":{"layout":"banner","coverPhoto":{"url":"https://lh3.googleusercontent.com/SybH-BjYW2ft1rzayamGLg_VwW7ocgnQ5cAxH3ROEpODvyaEODpYKW55gmAxCXDUvfKggQ4=s630-fcrop64=1,00002778ffffffff","height":626,"width":940},"coverInfo":{"topImageOffset":0,"leftImageOffset":0}}}}

Source: Google Plus API documentation

2
votes

In case anyone else comes across this question: the solution to retrieving the email addresses of an authorized user's contacts, what the OP seems to want (not the authorized user's own email address) is at Why can't I retrieve emails addresses and phone numbers with Google People API?.

Explanation: If you look at the section under "Query Parameters" on https://developers.google.com/people/api/rest/v1/people.connections/list, you'll see that requestMask is a parameter (documented at https://developers.google.com/people/api/rest/v1/RequestMask).

It says that you'll need to include the requestMask parameter in your query, because you're doing a people.list query (i.e. using the connections GET endpoint). The requestMask parameter basically tells the API what fields to pull: person.emailAddresses tells it to pull the peoples' email addresses, person.emailAddresses,person.names tells it to pull their email addresses and names, etc.

1
votes

You can get the profile emails from the Google People API, by making a request to https://people.googleapis.com/v1/people/me.

If you want non public emails, you will need to request the email or https://www.googleapis.com/auth/user.emails.read scope as specified in https://developers.google.com/people/v1/how-tos/authorizing#profile-scopes