Google api 如何从Events API仅获取电子邮件id(而不是G&x2B;id)

Google api 如何从Events API仅获取电子邮件id(而不是G&x2B;id),google-api,google-calendar-api,google-contacts-api,Google Api,Google Calendar Api,Google Contacts Api,我正在使用GoogleAPI获取用户的日历事件和联系人 在获取联系人时,我以以下方式获得响应:- [ { 'phones': [], 'image_path': '', 'id': 'ID', 'emails': ['email1'], 'name': ABC }, { 'phones': [], 'image_path': '', 'id':

我正在使用GoogleAPI获取用户的日历事件和联系人

在获取联系人时,我以以下方式获得响应:-

[
    {
        'phones': [],
        'image_path': '',
        'id': 'ID',
        'emails': ['email1'],
        'name': ABC
    },
    {
        'phones': [],
        'image_path': '',
        'id': 'ID',
        'emails': ['email2'],
        'name': DEF
    }
]
获取事件时,我得到以下响应:-

[
    {
        'attendees': [{
            'organizer': True,
            'displayName': 'ABC',
            'id': 'Google+ Id',
            'responseStatus': 'accepted'
        }, {
            'self': True,
            'displayName': 'DEF',
            'id': 'Google+ id',
            'responseStatus': 'accepted'
        }],
        'organizer': {
            'displayName': 'ABC',
            'id': 'Google+ id'
        },
        'creator': {
            'displayName': 'ABC',
            'id': 'Google+ id'
        },
    },
    {
        'organizer': {
            'self': True,
            'displayName': 'DEF',
            'email': 'email2'
        },
        'creator': {
            'self': True,
            'displayName': 'DEF',
            'email': 'email2'
        },
    }
] 
正如您所看到的,在获取活动时,(在参与者、组织者、创建者中),我在某些情况下会获得Google+id,在其他情况下会获得电子邮件id。这并不能在我的代码中保持一致性

因为我也获取了用户联系人,我通过他们的电子邮件ID搜索联系人。如果我没有在与会者、组织者或创建者中获得电子邮件id,我将无法引用联系人对象


我如何确保我只收到与会者的电子邮件id,而不是Google+id。

根据Google日历

可选查询参数

alwaysIncludeEmail
布尔值是否始终在电子邮件字段中包含 组织者、创建者和与会者,即使没有真正的电子邮件可用 (即,将提供生成的非工作价值)。使用 不鼓励使用此选项,并且仅适用于 无法处理所提及的电子邮件中缺少电子邮件地址值的情况 地方。可选。默认值为False

无论如何,不鼓励使用它,因为有时没有真正的电子邮件可用

解决方法:

您可以使用G+通过提供用户的电子邮件来获取用户电子邮件

电子邮件
此范围要求您的应用程序可以访问:

用户的Google帐户电子邮件地址。通过调用
people.get
(返回电子邮件数组)或调用
people.getOpenIdConnect
(返回符合OIDC格式的电子邮件属性)访问电子邮件地址。 用户所属的Google应用程序域的名称(如果有)。域名作为域属性从返回

people.get(或getOpenIdConnect的hd属性)


此电子邮件作用域相当于并取代了作用域。

使用此方法,我可以仅获取电子邮件地址。因为,我不确定请求到底是什么样子的。如果仅使用displayName和email设置字段param。你应该能够得到你所需要的。希望能有帮助。谢谢你的回复。每当我尝试添加任何
字段时,它都会显示,
无效字段选择创建者
。对于任何类型的字段,它都会返回相同的错误。缺少id字段的唯一用户是
self
字段标记为
True
…这有帮助吗?没有,因为我没有在某些活动的参与者中获得电子邮件id