获取 profilePhoto

命名空间:microsoft.graph

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

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

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

权限

要调用此 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

检索团队的个人资料照片

权限类型 权限(从最低特权到最高特权)
委派(工作或学校帐户) TeamReadBasicAll、TeamSettingsReadAll、TeamSettingsReadWriteAll
委派(个人 Microsoft 帐户) 不支持。
应用程序 TeamReadBasicAll、TeamSettingsReadAll、TeamSettingsReadWriteAll

检索用户的个人资料照片

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

备注

  1. 个人 Microsoft 帐户不支持元数据操作。
  2. 当前在使用应用权限访问组照片方面存在一个 已知问题
  3. 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。 如果照片存储在 Azure Active Directory 中,可以采用任何尺寸。

可选的查询参数

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

请求标头

名称 类型 说明
Authorization string Bearer {token}。必需。

请求正文

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

响应

获取照片的响应

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

获取照片元数据的响应

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

示例

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

请求

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

响应

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

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

请求

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

响应

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

示例 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。

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

使用 /photo/$value 终结点来获取个人资料照片的二进制数据时,需要将数据转换为 Base64 字符串,以便将其添加为电子邮件附件。 以下是 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);