获取 profilePhoto

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

获取 Microsoft 365 中指定的 profilePhoto 或其元数据(profilePhoto 属性)。

注意:尝试获取 用户 照片时,此操作首先尝试从 Microsoft 365 检索指定的照片。 如果照片在 Microsoft 365 中不可用,API 会尝试从 Entra ID Microsoft检索照片。

Microsoft 365 支持以下高清照片尺寸:48x48、64x64、96x96、120x120、240x240、360x360、432x432、504x504 和 648x648。 如果照片存储在 Entra ID Microsoft,则照片可以是任何尺寸。

可以获取照片最大尺寸的元数据,也可以指定尺寸来获取相应照片尺寸的元数据。 如果请求的大小不可用,你仍然可以获得用户已上传并可用的较小大小。 例如,如果用户上传的照片为 504x504 像素,则除了 648x648 照片大小,所有其他照片都可以下载。 如果指定的大小在用户的邮箱或Microsoft Entra ID 中不可用,则会返回大小 1x1 以及其余元数据。

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

下表显示了对每种受支持的资源类型调用此 API 所需的最低特权权限。 请遵循 最佳做法 来请求最低特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

检索联系人的个人资料照片

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Contacts.Read Contacts.ReadWrite
委派(个人 Microsoft 帐户) Contacts.Read Contacts.ReadWrite
应用程序 Contacts.Read Contacts.ReadWrite

检索组的个人资料照片

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) ProfilePhoto.Read.All ProfilePhoto.ReadWrite.All、Group.Read.All、Group.ReadWrite.All
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 ProfilePhoto.Read.All ProfilePhoto.ReadWrite.All、Group.Read.All、Group.ReadWrite.All

检索团队的个人资料照片

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Team.ReadBasic.All TeamSettings.Read.All、TeamSettings.ReadWrite.All
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 Team.ReadBasic.All TeamSettings.Read.All、TeamSettings.ReadWrite.All

检索用户的个人资料照片

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) ProfilePhoto.Read.All ProfilePhoto.ReadWrite.All、User.Read、User.ReadBasic.All、User.Read.All、User.ReadWrite、User.ReadWrite.All
委派(个人 Microsoft 帐户) User.Read User.ReadWrite
应用程序 ProfilePhoto.Read.All ProfilePhoto.ReadWrite.All、User.Read.All、User.ReadWrite.All

注意

  • Azure AD B2C 租户目前不支持使用 Microsoft Graph API 检索用户的照片。

HTTP 请求

获取照片

GET /me/photo/$value
GET /users/{id | userPrincipalName}/photo/$value
GET /groups/{id}/photo/$value
GET /me/contacts/{id}/photo/$value
GET /users/{id | userPrincipalName}/contacts/{id}/photo/$value
GET /me/contactfolders/{contactFolderId}/contacts/{id}/photo/$value
GET /users/{id | userPrincipalName}/contactfolders/{contactFolderId}/contacts/{id}/photo/$value
GET /team/{id}/photo/$value

获取照片的元数据

GET /me/photo
GET /me/photos
GET /users/{id | userPrincipalName}/photo
GET /groups/{id}/photo
GET /me/contacts/{id}/photo
GET /users/{id | userPrincipalName}/contacts/{id}/photo
GET /me/contactfolders/{contactFolderId}/contacts/{id}/photo
GET /users/{id | userPrincipalName}/contactfolders/{contactFolderId}/contacts/{id}/photo
GET /team/{id}/photo

获取指定照片尺寸的元数据

GET /me/photos/{size}
GET /users/{id | userPrincipalName}/photos/{size}
GET /groups/{id}/photos/{size}

路径参数

参数 类型 说明
size String 照片尺寸。 Microsoft 365 支持以下高清照片尺寸:48x48、64x64、96x96、120x120、240x240、360x360、432x432、504x504 和 648x648。 如果照片存储在 Entra ID Microsoft,则照片可以是任何尺寸。

可选的查询参数

此方法支持使用 OData 查询参数来帮助自定义响应。

请求标头

名称 类型 说明
Authorization string 持有者 {token}。 必填。 详细了解 身份验证和授权

请求正文

请勿提供此方法的请求正文。

响应

获取照片的响应

如果成功,此方法返回 200 OK 响应代码和所请求照片的二进制数据。 如果照片不存在,此操作返回 404 Not Found

获取照片元数据的响应

如果成功,此方法在响应正文中返回 200 OK 响应代码和 profilePhoto 对象。

示例

示例 1:为已登录用户获取最大可用大小的照片

请求

以下示例显示了一个请求。

GET https://graph.microsoft.com/beta/me/photo/$value
Content-Type: image/jpg

响应

包含所请求照片的二进制数据。 HTTP 响应代码为 200。

HTTP/1.1 200 OK

示例 2:获取已登录用户的 48x48 照片

请求

以下示例显示了一个请求。

GET https://graph.microsoft.com/beta/me/photos/48x48/$value
Content-Type: image/jpg

注意

  • 若要确保输出照片的大小固定,请对大小固定的照片使用专用终结点, (/photos) ,而不是依赖于默认照片终结点,后者提供最大的可用照片 (/photo) 。

响应

包含所请求的 48x48 照片的二进制数据。 HTTP 响应代码为 200。

HTTP/1.1 200 OK

示例 3:获取已登录用户的用户照片的元数据

请求

以下示例显示了一个请求。

GET https://graph.microsoft.com/beta/me/photo

响应

以下响应数据显示照片的元数据。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Me/photo/$entity",
    "@odata.id": "https://graph.microsoft.com/beta/users('ddfcd489-628b-7d04-b48b-20075df800e5@1717622f-1d94-c0d4-9d74-f907ad6677b4')/photo",
    "@odata.mediaContentType": "image/jpeg",
    "@odata.mediaEtag": "\"BA09D118\"",
    "id": "240x240",
    "width": 240,
    "height": 240
}

以下响应数据显示还没有为用户上传照片时的响应内容。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Me/photo/$entity",
    "@odata.id": "https://graph.microsoft.com/beta/users('ddfcd489-628b-7d04-b48b-20075df800e5@1717622f-1d94-c0d4-9d74-f907ad6677b4')/photo",
    "@odata.mediaContentType": "image/gif",
    "@odata.mediaEtag": "",
    "id": "1x1",
    "width": 1,
    "height": 1
}

示例 4:获取团队照片的元数据

请求

以下示例演示了获取团队照片元数据的请求。

GET https://graph.microsoft.com/beta/teams/172b0cce-e65d-44ce-9a49-91d9f2e8491e/photo

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#teams('172b0cce-e65d-44ce-9a49-91d9f2e8491e')/photo/$entity",
    "@odata.id": "https://graph.microsoft.com/beta/teams('172b0cce-e65d-44ce-9a49-91d9f2e8491e')/photo",
    "@odata.mediaContentType": "image/jpeg",
    "@odata.mediaEtag": "\"BA09D118\"",
    "id": "240X240",
    "width": 240,
    "height": 240
}

示例 5:获取团队照片的二进制数据

以下示例演示了获取团队照片的二进制数据的请求。

请求

GET https://graph.microsoft.com/beta/teams/172b0cce-e65d-44ce-9a49-91d9f2e8491e/photo/$value

响应

包含所请求照片的二进制数据。 HTTP 响应代码为 200。

HTTP/1.1 200 OK

使用所请求照片的二进制数据

使用 /photo/$value 终结点获取个人资料照片的二进制数据时,需要将数据转换为 base-64 字符串以将其添加为电子邮件附件。 以下 JavaScript 示例介绍如何创建一个数组,并将其作为 Outlook 邮件Attachments 参数值传递。

const attachments = [{
  '@odata.type': '#microsoft.graph.fileAttachment',
  ContentBytes: file.toString('base64'),
  Name: 'mypic.jpg'
}];

有关实现的详细信息,请参阅 Node.js的 Microsoft Graph Connect 示例

如果想要在网页上显示图像,可以通过图像创建内存中对象,然后使该对象成为图像元素源。 以下 JavaScript 示例演示了此操作。

const url = window.URL || window.webkitURL;
const blobUrl = url.createObjectURL(image.data);
document.getElementById(imageElement).setAttribute("src", blobUrl);