我在 Microsoft Teams 上的应用程序正在使用同意流程来获取用户的权限。然后,使用 Microsoft 返回的访问令牌,应用程序尝试使用
/v1.0/me
路由获取用户的个人资料。但对于许多用户来说,配置文件对象中的 preferredLanguage
字段是 null
,仅在某些用户中该字段返回一种语言。我的应用程序需要用户的首选语言才能显示应用程序的翻译版本。
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',
},
});
我同意 @user2250152,在查询用户详细信息时,如果
显示为preferredLanguage
,那么用户可能没有在 Azure AD 用户详细信息中设置null
。preferredLanguage
转到 Azure 门户 -> 用户 -> 选择用户 -> 概述 -> 属性
最初,我在查询用户时得到
preferredLanguage
为 null:
https://graph.microsoft.com/v1.0/me?$select=id,mail,displayName,givenName,businessPhones,preferredLanguage
注意:某些用户属性/详细信息无法直接从 Azure 门户更新,请使用 Microsoft Graph API 更新
preferredLanguage
属性。
刷新用户页面后,
preferredLanguage
属性更新:
现在,当我使用相同的查询来获取用户详细信息时,
preferredLanguage
会显示以下值:
https://graph.microsoft.com/v1.0/me?$select=id,mail,displayName,givenName,businessPhones,preferredLanguage
{
"@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"
}