如何知道使用我的Google帐户进行身份验证的用户的身份验证电子邮件

时间:2019-04-05 10:31:56

标签: node.js google-api google-calendar-api google-oauth google-api-nodejs-client

我正在为我的应用集成Google身份验证以创建日历事件。

const {google} = require('googleapis');

const SCOPES = ['https://www.googleapis.com/auth/calendar','https://www.googleapis.com/auth/userinfo.email']

我已经在身份验证中使用了上述范围,并生成了URL并发送给客户端。身份验证获得成功,我能够接收代码并生成令牌。

但是使用代码,无论谁登录,我都需要经过身份验证的用户的电子邮件。是否有任何方法/示例来知道如何获取用户的电子邮件?我在谷歌搜索找到解决方案。但是我没明白。帮助我了解这一点。

2 个答案:

答案 0 :(得分:-1)

收到令牌后,您需要使用该令牌向userinfo端点发出HTTP请求,以获取所需的用户信息。

您可以从https://accounts.google.com/.well-known/openid-configuration上的发现文档中获取该端点的url。

用于获取用户信息的当前URL为https://openidconnect.googleapis.com/v1/userinfo

答案 1 :(得分:-1)

如果您在用户的主日历上执行calendar get。所有用户都有主日历

请求

  

获取https://www.googleapis.com/calendar/v3/calendars/primary

响应

https://example.com/character/view/

Id和摘要均为用户的电子邮件地址。通过这种方式,您将不需要请求{ "kind": "calendar#calendar", "etag": "\"JWPyaEfg9X1jMhlHCcI4tl2h6uo/AxePbI13h8-KuIOLek\"", "id": "xxxx@gmail.com", "summary": "xxx@gmail.com", "timeZone": "Europe/Copenhagen", "conferenceProperties": { "allowedConferenceSolutionTypes": [ "eventHangout" ] } } 范围

节点猜测

注意:我不是node.js开发人员,这是一个疯狂的猜测,您必须解决这个问题

https://www.googleapis.com/auth/userinfo.email