获取 profilePhoto

命名空间:microsoft.graph

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

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

可以获取照片最大尺寸的元数据,也可以指定尺寸来获取相应照片尺寸的元数据。 如果请求的大小不可用,你仍然可以获得用户已上传并可用的较小大小。 例如,如果用户上传的照片为 504x504 像素,则除 648x648 大小的照片可以下载。

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

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

权限

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

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

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

检索组的个人资料照片

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) Group.Read.All Group.ReadWrite.All
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 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

检索用户的个人资料照片

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

注意

  • 个人 Microsoft 帐户不支持元数据操作。
  • 仅具有应用程序权限的应用无法访问组的照片。
  • Azure AD B2C 租户目前不支持使用 Microsoft 图形 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。 如果照片存储在Microsoft Entra ID中,则可以是任何尺寸。

可选的查询参数

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

请求标头

名称 类型 说明
Authorization string 持有者 {token}。 必填。

请求正文

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

响应

获取照片的响应

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

获取照片元数据的响应

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

示例

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

请求

GET https://graph.microsoft.com/v1.0/me/photo/$value

响应

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

HTTP/1.1 200 OK

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

请求

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

注意

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

响应

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

HTTP/1.1 200 OK

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

请求

GET https://graph.microsoft.com/v1.0/me/photo

响应

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

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

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Me/photo/$entity",
    "@odata.id": "https://graph.microsoft.com/v1.0/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/v1.0/$metadata#Me/photo/$entity",
    "@odata.id": "https://graph.microsoft.com/v1.0/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/v1.0/teams/172b0cce-e65d-44ce-9a49-91d9f2e8491e/photo

响应

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

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

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams('172b0cce-e65d-44ce-9a49-91d9f2e8491e')/photo/$entity",
    "@odata.id": "https://graph.microsoft.com/v1.0/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/v1.0/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);