【问题标题】:How to get email_ids only (not G+ id) from Events API如何从事件 API 仅获取 email_ids(不是 G+ id)
【发布时间】:2016-03-20 08:42:18
【问题描述】:

我正在使用 Google API 来获取用户的日历活动和联系人。

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

[
    {
        '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,在其他情况下会获得 email_ids。这不会在我的代码中保持一致性。

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

如何确保我只获得与会者的 email_id,而不是 Google+ id。

【问题讨论】:

  • 我可以使用Events.get 方法获得电子邮件地址。因为,我不确定请求的具体外观。如果您仅使用 displayName 和电子邮件设置字段参数。你应该能够得到你所需要的。希望对您有所帮助。
  • 感谢您的回复。每当我尝试添加任何fields 时,它都会显示Invalid field selection creator。它为任何类型的字段返回相同的错误。
  • 唯一缺少 id 字段的用户是 self 字段标记为 True...有帮助吗?
  • 不,因为我没有收到某些活动参与者的电子邮件 ID

标签: google-api google-calendar-api google-contacts-api


【解决方案1】:

根据谷歌日历API docs

可选查询参数

alwaysIncludeEmail

boolean 是否始终在电子邮件字段中包含一个值 组织者、创建者和与会者,即使没有可用的真实电子邮件 (即将提供生成的非工作值)。指某东西的用途 不鼓励使用此选项,仅应由以下客户端使用 无法处理提到的电子邮件地址值的缺失 地方。可选的。默认为 False。

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

解决方法:

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

电子邮件
此范围要求您的应用有权访问:

用户的 Google 帐户电子邮件地址。您可以通过调用 people.get 来访问电子邮件地址,这将返回 emails 数组(或通过调用 people.getOpenIdConnect,它会返回符合 OIDC 格式的 email 属性)。 用户所属的 Google Apps 域的名称(如果有)。域名作为域属性从

返回

people.get (or hd property from getOpenIdConnect)

此电子邮件范围等效于并替换 https://www.googleapis.com/auth/userinfo.email 范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多