0

是否可以从 refreshToken、accessToken 或通过类似于此Retrieve profile information for a signed-in user in NodeJS 的方法获取当前登录用户(电子邮件、姓名等)?

4

1 回答 1

1

您可以使用 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 people.get为您提供更多信息。

但是,如果不请求电子邮件范围,您就无法从 userinfo 端点取回电子邮件,但是当您使用谷歌日历范围时,您确实不需要一个技巧。

如果您使用calendar.get并请求用户主日历,则日历名称是他们的电子邮件地址。

{
 "kind": "calendar#calendar",
 "etag": "\"Qvsbvz0_YlxYi3Ml2Fd7A\"",
 "id": "xxxxx@gmail.com",
 "summary": "Linda Lawton ",
 "description": "test",
 "timeZone": "Europe/Copenhagen",
 "conferenceProperties": {
  "allowedConferenceSolutionTypes": [
   "hangoutsMeet"
  ]
 }
}
于 2020-06-29T08:29:19.057 回答