Можно ли получить текущего вошедшего в систему пользователя (адрес электронной почты, имя и т. д.) с помощью refreshToken, accessToken или методом, подобным этому Получить информацию о профиле вошедшего пользователя в NodeJS?
NodeJS. Есть ли способ получить текущего пользователя, вошедшего в систему, с помощью API Google?
comment
пожалуйста, отредактируйте свой вопрос и включите код авторизации.
- person DaImTo   schedule 29.06.2020
comment
Благодарю вас! Что такое код авторизации?`
- person STh   schedule 29.06.2020
comment
Код, который вы используете для входа пользователя. в частности, какие области вы используете при запросе авторизации данных пользователей.
- person DaImTo   schedule 29.06.2020
comment
Это область: 'googleapis.com/auth/calendar.
- person STh   schedule 29.06.2020
comment
Вы смотрели на это? stackoverflow.com/a/46780714/11072506
- person Hamza Khuswan   schedule 29.06.2020
comment
@HamzaKhuswan, который будет работать, только если они запрашивают область профиля
- person DaImTo   schedule 29.06.2020
comment
@HamzaKhuswan Это может исправить это; спасибо!
- person STh   schedule 29.06.2020
comment
@DaImTo Нужно ли добавлять область профиля?
- person STh   schedule 29.06.2020
comment
@STh да, вам нужно будет добавить область профиля, чтобы увидеть полную информацию о профиле, но если вы просто подождете их имя и адрес электронной почты, вы можете просто пройти через caledar.get, у него есть имя и адрес электронной почты, не уверен, что они должны были настроить имя есть или нет.
- person DaImTo   schedule 29.06.2020
comment
Спасибо за все ваши ответы! Я особенно хотел получить их идентификатор Google ... В любом случае, ваш ответ ниже исправит это для большего количества людей ... @DaImTo
- person STh   schedule 29.06.2020
comment
Конечная точка userinfo не в 100% случаев возвращает данные userinfo. но вы всегда должны вернуть подписку, по крайней мере, которая является их идентификатором Google.
- person DaImTo   schedule 29.06.2020
Ответы (1)
вы можете использовать конечную точку userinfo, чтобы запросить часть этой информации.
https://openidconnect.googleapis.com/v1/userinfo?access_token=XXXX
Одна проблема заключается в том, что вам нужно будет добавить область profile в ваш запрос на авторизацию, тогда вы получите что-то вроде этого
{
"sub": "117475532672775346",
"name": "Linda Lawton",
"given_name": "Linda",
"family_name": "Lawton",
"picture": "https://lh3.googleusercontent.com/a-/AOh14GhroCYJp2P9xeYeYk1npchBPK-zbtTxzNQo0WAHI20",
"locale": "en"
}
Затем вы также можете воспользоваться API Google People people.get что даст вам еще больше информации.
Однако вы не можете получить электронную почту от конечной точки userinfo без запроса области электронной почты, но есть трюк, который вам действительно не нужен, поскольку вы используете область календаря Google.
если вы используете calendar.get и запросите у основного календаря пользователя имя календаря, являющееся их адресом электронной почты.
{
"kind": "calendar#calendar",
"etag": "\"Qvsbvz0_YlxYi3Ml2Fd7A\"",
"id": "[email protected]",
"summary": "Linda Lawton ",
"description": "test",
"timeZone": "Europe/Copenhagen",
"conferenceProperties": {
"allowedConferenceSolutionTypes": [
"hangoutsMeet"
]
}
}
person
DaImTo
schedule
29.06.2020
ознакомьтесь со следующим руководством о том, как добавить в код дополнительные области developers.google.com/calendar/quickstart. /nodejs scopes — это просто массив строк
- person DaImTo; 29.06.2020