你想要做的事情无法通过GMAIL API或任何其他Google API实现。
您无法使用任何Google API端点获取与电子邮件地址相关联的图像或任何其他个人资料信息。请参见下面的说明。
获取发件人电子邮件的图像
Gmail API列出已发送和接收用户的电子邮件消息。 Gmail API基本上以MIME格式返回邮件服务器电子邮件消息响应,如果您检查,则不包含个人资料图像。它不会向您返回发件人或收件人的图像。
Google没有为开发人员提供端点来搜索gmail.com电子邮件地址并返回任何用户个人资料信息(包括图像),这将违反用户的隐私。用户必须授予您权限才能查看其图像,并且您没有每个发送电子邮件给您验证用户的gmail用户的权限。
gmail网站可能会对gmail电子邮件地址进行某种检查,并附加帐户图片。 Google可以访问所有GMAIL用户的配置文件数据,但Google无法提供相同的访问权限,因为这将违反用户的隐私。如果不是gmail帐户,则可能会检查
Gravatar是否为此电子邮件地址设置了图像。同样,您无法使用其电子邮件地址请求Google用户的图像。
- 您可以检查Gravatar,看是否已为该电子邮件设置了头像。
- 如果经过身份验证的用户已将此用户添加为联系人,并为此用户添加了图片,则可能可以使用People api。
过去,我曾建议用户将用户电子邮件地址的第一个字母作为图像,并使用该字母创建图像。您还可以使用问号,这实际上是当Gmail网站无法找到用户的电子邮件时执行的操作,可能是通过检查Gravatar实现的。
![enter image description here](https://istack.dev59.com/vHK9W.webp)
获取当前已认证用户的图像
您可以从people.get端点获取此信息,只需确保在对用户进行身份验证时请求了配置文件范围。
GET https://people.googleapis.com/v1/people/me
它返回一个包含用户个人资料信息的大型响应,其中一部分包含用户的图片
"photos": [
{
"url": "https://lh3.googleusercontent.com/a-/AAuE7mDuIWqXzrrp-65cIhXSD2HjCI8WYsWHR0fDx5_wQPY=s100",
"metadata": {
"source": {
"type": "PROFILE",
"id": "117200475532672775346"
},
"primary": true
}
}
],
官方people api示例项目包含有关如何连接到api的信息。只需确保添加“profile”范围。
获取图片的代码应该类似于这样。
function getPicture() {
gapi.client.people.people.get({
'resourceName': 'people/me',
'pageSize': 10,
'personFields': 'photos',
}).then(function(response) {
var connections = response.result.connections;
appendPre('Connections:');
if (connections.length > 0) {
for (i = 0; i < connections.length; i++) {
var person = connections[i];
if (person.url && person.url.length > 0) {
appendPre(person.names[0].url)
} else {
appendPre("No display name found for connection.");
}
}
} else {
appendPre('No connections found.');
}
});
}