Microsoft graph API(/v1.0/me) 在配置文件对象的“preferredLanguage”字段中返回 NULL 的原因是什么?

问题描述 投票:0回答:1

我在 Microsoft Teams 上的应用程序正在使用同意流程来获取用户的权限。然后,使用 Microsoft 返回的访问令牌,应用程序尝试使用

/v1.0/me
路由获取用户的个人资料。但对于许多用户来说,配置文件对象中的
preferredLanguage
字段是
null
,仅在某些用户中该字段返回一种语言。我的应用程序需要用户的首选语言才能显示应用程序的翻译版本。

我向 Microsoft 请求以下范围。

  1. 用户.阅读
  2. TeamsActivity.Send(与此问题无关)
  3. offline_access(用于刷新令牌)

以下是获取配置文件请求的代码。

const { data, status } = await axios({
      method: 'GET',
      url: `https://graph.microsoft.com/v1.0/me?$select=id,mail,displayName,givenName,businessPhones,preferredLanguage`,
      headers: {
        Authorization: `Bearer ${accessToken}`,
        ConsistencyLevel: 'eventual',
      },
});

下面是 Microsoft 365 语言设置的屏幕截图以及 API 返回的内容。

azure microsoft-graph-api microsoft-teams microsoft-graph-teams microsoft365
1个回答
0
投票

我同意 @user2250152,在查询用户详细信息时,如果

preferredLanguage
显示为
null
,那么用户可能没有在 Azure AD 用户详细信息中设置
preferredLanguage

转到 Azure 门户 -> 用户 -> 选择用户 -> 概述 -> 属性

enter image description here

最初,我在查询用户时得到

preferredLanguage
null

https://graph.microsoft.com/v1.0/me?$select=id,mail,displayName,givenName,businessPhones,preferredLanguage

enter image description here

注意:某些用户属性/详细信息无法直接从 Azure 门户更新,请使用 Microsoft Graph API 更新

preferredLanguage
属性。

enter image description here

刷新用户页面后,

preferredLanguage
属性更新:

enter image description here

现在,当我使用相同的查询来获取用户详细信息时,

preferredLanguage
会显示以下值:

https://graph.microsoft.com/v1.0/me?$select=id,mail,displayName,givenName,businessPhones,preferredLanguage

enter image description here

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,mail,displayName,givenName,businessPhones,preferredLanguage)/$entity",
"id": "XXX",
"mail": "user@***.onmicrosoft.com",
"displayName": "user",
"givenName": null,
"businessPhones": [],
"preferredLanguage": "en-US"
}
© www.soinside.com 2019 - 2024. All rights reserved.