问题
使用 Google Apps OAuth 进行身份验证,如何检索用户的电子邮件别名?
我似乎找不到任何关于如何执行此操作的 API 文档。必要的范围是什么以及获取该信息的正确调用是什么?
为什么
假设我有一位用户 Alice 邀请
[email protected]
使用该应用程序。不幸的是,[email protected]
实际上是[email protected]
的别名。当 Bob 使用 Google OAuth 登录服务时,Google 告诉我他的电子邮件地址是 [email protected]
。现在,当我想将 Bob 识别为同一个帐户时,我不小心为 Bob 创建了两个帐户。
范围
https://www.googleapis.com/auth/user.emails.read
授予权限“查看并下载您的所有 Google 帐户电子邮件地址”。用户将看到如下所示的同意屏幕:
此范围属于 People API。在开始之前,请确保您的项目已启用 People API,否则您将收到 403 错误,例如“People API 之前未在项目 some-project-id 中使用或已禁用”:
People API people.get 端点。使用 people/me
访问当前经过身份验证的配置文件的信息。
curl -H "Authorization: Bearer some-token-from-oauth-flow" https://people.googleapis.com/v1/people/me?personFields=emailAddresses
响应示例:(人资源)
{
"resourceName": "people/some-id-here",
"etag": "some-etag-here",
"emailAddresses": [
{
"metadata": {
"primary": true,
"verified": true,
"source": {
"type": "DOMAIN_PROFILE",
"id": "some-id-here"
},
"sourcePrimary": true
},
"value": "[email protected]"
},
{
"metadata": {
"source": {
"type": "DOMAIN_PROFILE",
"id": "some-id-here"
}
},
"value": "[email protected]"
}
]
}
。您需要使用的范围是: https://www.googleapis.com/auth/user.addresses.read 这将返回用户的所有电子邮件地址,并告诉您哪个是主要的。