Node.js NodeJS-有没有一种方法可以通过googleapi获取当前登录的用户?

Node.js NodeJS-有没有一种方法可以通过googleapi获取当前登录的用户?,node.js,google-oauth,google-api-nodejs-client,passport-google-oauth,Node.js,Google Oauth,Google Api Nodejs Client,Passport Google Oauth,是否可以从refreshToken、accessToken或通过与NodeJS中类似的方法获取当前登录的用户(电子邮件、姓名等)?您可以使用userinfo端点请求某些信息 https://openidconnect.googleapis.com/v1/userinfo?access_token=XXXX 一个问题是,您需要将配置文件范围添加到您的身份验证请求中,然后您会得到类似这样的结果 { "sub": "117475532672775346",

是否可以从refreshToken、accessToken或通过与NodeJS中类似的方法获取当前登录的用户(电子邮件、姓名等)?

您可以使用userinfo端点请求某些信息

https://openidconnect.googleapis.com/v1/userinfo?access_token=XXXX
一个问题是,您需要将配置文件范围添加到您的身份验证请求中,然后您会得到类似这样的结果

{
  "sub": "117475532672775346",
  "name": "Linda Lawton",
  "given_name": "Linda",
  "family_name": "Lawton",
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GhroCYJp2P9xeYeYk1npchBPK-zbtTxzNQo0WAHI20",
  "locale": "en"
}
然后你还可以浏览google people api,它将为你提供更多信息

https://openidconnect.googleapis.com/v1/userinfo?access_token=XXXX
但是,如果不请求电子邮件作用域,您无法从userinfo端点获取电子邮件,但是有一个技巧您确实不需要,因为您正在使用google日历作用域

如果您使用并请求用户主日历,则日历名称为其电子邮件地址

{
 "kind": "calendar#calendar",
 "etag": "\"Qvsbvz0_YlxYi3Ml2Fd7A\"",
 "id": "xxxxx@gmail.com",
 "summary": "Linda Lawton ",
 "description": "test",
 "timeZone": "Europe/Copenhagen",
 "conferenceProperties": {
  "allowedConferenceSolutionTypes": [
   "hangoutsMeet"
  ]
 }
}

请编辑您的问题并加入您的自动生成代码。您看过这个吗@是的,您需要添加配置文件范围才能查看完整的配置文件信息,但如果您只是等待他们的姓名和电子邮件,那么您可以通过caledar。get it有姓名和电子邮件,但不确定他们是否必须在那里设置姓名。谢谢您的所有回答!我特别想得到他们的谷歌id。。。不管怎样,你下面的答案将为更多的人修正它@DaImTouserinfo端点在100%的时间内不会返回userinfo数据。但是你至少应该把sub取回,这是他们的googleid。检查下面的教程,了解如何向你的代码作用域添加额外的作用域,它只是一个字符串数组