Node.js – How to get user info profile from Google API

google apigoogle-oauthnode.jsoauth

I have to implement signIn by google account.

I want to some suggestions.

I created project in google console. Added scope user info.profile

I'm following course instruction on internet, but I still cannot get userinfo ( email, name, age … ).

Step:

{
    "azp": "155122683461-51hq2n932svo4ajbt98ic0q67m4tuj5o.apps.googleusercontent.com",
    "aud": "155122683461-51hq2n932svo4ajbt98ic0q67m4tuj5o.apps.googleusercontent.com",
    "sub": "108865940357700877124",
    "scope": "https://www.googleapis.com/auth/userinfo.profile",
    "exp": "1554094721",
    "expires_in": "3326",
    "access_type": "offline"
}

Can you guys give me an example 🙁

Thanks

Best Answer

people api

The infomration you are looking for can be found on people.get

GET https://people.googleapis.com/v1/{resourceName=people/*}

tip send Field mask with no space - person.emailAddresses,person.birthdays It reads form person info so the user will have had to fill in this information

However you will need to add the scopes to get the information you want

https://www.googleapis.com/auth/profile.emails.read
https://www.googleapis.com/auth/user.birthday.read

You can test it here Google Apis explorer

A node.js quick start for google people api can be found here

userinfo endpoint

The userinfo endpoint can also be used but it does not return the information you are looking for

You need to request the email scope to have seen email in the below response the user must grant you permission to see their email the following is standard response for profile scope only.

GET /oauth2/v2/userinfo HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer ya29.GlveBiwp4-NTPLU9VN3rn1enty11KOdQHGcyfZd1xJ1Ee9eGS2Pw2nJ7KDUBQPa-uT-AoKDQdoVigU6bruVIB1a3fiBu1n

response

{
  "picture": "https://lh5.googleusercontent.com/-a1CWlFnA5xE/AAAAAAAAAAI/AAAAAAAAl1I/UcwPajZOuN4/photo.jpg", 
  "name": "Linda Lawton", 
  "family_name": "Lawton", 
  "locale": "en", 
  "gender": "female", 
  "link": "https://plus.google.com/+LindaLawton", 
  "given_name": "Linda", 
  "id": "117200475532672775346"
}

scopes

You should consult the node tutorial for how to work with scopes. Remember you will need to request access of the user again if you change the scope in your code.

const SCOPES = ['profile', 'email'];
Related Topic