调用Microsoft Graph获取多语言SharePoint站点如何指定Preferred-Language?
可以通过配置请求参数强制获取指定语言的站点信息,无需调整Azure AD注册应用的基础权限配置,仅需在Azure函数的请求逻辑中做少量调整即可实现,具体操作如下:
请求头配置(推荐方案)
调用Graph站点接口时,在请求头中添加
Preferred-Language字段,取值为目标语言的标准语言代码(英文为en-US、简体中文为zh-CN等),该配置优先级最高,可直接覆盖默认的语言返回规则。
以Azure函数常用的C# HttpClient调用为例,示例代码如下:using System.Net.Http; using System.Net.Http.Headers; // 此处省略令牌获取逻辑,沿用你现有获取Graph访问令牌的代码即可 string graphAccessToken = "你的Graph接口访问令牌"; string targetSiteUrl = "https://graph.microsoft.com/v1.0/sites/xxxxxxxx.sharepoint.com/:/sites/test-comms-site"; var httpClient = new HttpClient(); // 添加授权头 httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", graphAccessToken); // 配置首选语言为英文 httpClient.DefaultRequestHeaders.Add("Preferred-Language", "en-US"); // 发起请求 HttpResponseMessage response = await httpClient.GetAsync(targetSiteUrl);如果使用Microsoft Graph SDK发起请求,可直接在请求构造阶段添加语言配置,以.NET Graph SDK为例:
var graphClient = new GraphServiceClient( new DelegateAuthenticationProvider(async (requestMessage) => { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", graphAccessToken); // 配置首选语言 requestMessage.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-US")); })); // 调用接口获取站点信息 var siteInfo = await graphClient.Sites["xxxxxxxx.sharepoint.com:/sites/test-comms-site:"].GetAsync();可选配置:注册应用声明配置
若不想修改请求逻辑,也可在Azure AD注册应用的清单中配置
optionalClaims,为访问令牌添加preferred_language声明,设置默认返回语言。该配置优先级低于请求头配置,灵活度较低,适合全场景固定返回语言的需求。注意事项
若你指定的语言没有在站点多语言配置中添加对应翻译,接口会自动回退到站点默认语言返回内容,不会抛出请求错误。
内容的提问来源于stack exchange,提问作者Miguel Angel García Martínez
相关产品推荐
相关产品推荐

