How I can get user info profile from Google API?
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'];
Vũ Anh Dũng
Updated on June 14, 2022Comments
-
Vũ Anh Dũng almost 2 years
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:
- Get code in url redirect_uri by client_id
- Get token https://accounts.google.com/o/oauth2/token by code, client_id, client_secret ...
- Try call to https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=accessToken to get info but only object
{ "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
-
Vũ Anh Dũng about 5 yearsI can't see that scope in list scope can choice
-
DaImTo about 5 yearswhich scope and which list? Scopes are just strings you can add what ever you want.
-
Vũ Anh Dũng about 5 years
GET /oauth2/v2/userinfo HTTP/1.1 Host: www.googleapis.com
Working but I need user.email in response -
DaImTo about 5 yearsAs i mentioned in my answer and in your other comment. You need to add the email scope when authorizing your user if you want return email in userinfo endpoint.
-
Vũ Anh Dũng about 5 years
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/profile.emails.read,https://www.googleapis.com/auth/user.birthday.read&response_type=code&access_type=offline&redirect_uri=http://localhost:3001/oauth/google&client_id=607602703319-5654m0luqaaqjq14vjjei27qo86a9ct0.apps.googleusercontent.com
-
Vũ Anh Dũng about 5 yearsDo you mean set scope to url request authorization? I set it as above but gt error:
400. That’s an error. Error: invalid_scope Some requested scopes were invalid. {invalid=[https://www.googleapis.com/auth/userinfo.profile,https://ww
-
DaImTo about 5 yearscheck the scope section of my answer. I think that you should open a new question and post your code this is beyond the scope of your current question which was just about which api to use. if you post a new question with your code i would be able to help you address any issues with your code more efficiently
-
Vũ Anh Dũng about 5 yearsThanks. I tried add scope userinfo.email and it working
-
Sodved about 3 yearsHi, thanks. I have the userinfo call working fine:
"https://www.googleapis.com/oauth2/v1/userinfo
but was just wondering if there are proper GoogleClient libraries (java) somewhere encapsulating this. I don't want to use people API as is not currently enabled for our app and all we want is the email address to display with the token. Thanks -
DaImTo about 3 years@Sodved it is not recommend using the userinfo endpoint as its not guaranteed to always return all of the claims, on occasion they will not be returned to you as its not intended to be a profile data resource. If you want to get user profile data then you should use the people api which will give you access to all the data you need.
-
Sodved about 3 yearsAll I want is the email that was used to get the refresh token. But I'll talk with our GCP team about enabling the People API