如何使用 Microsoft Graph API 获取当前站点的 siteId?

Posted

技术标签:

【中文标题】如何使用 Microsoft Graph API 获取当前站点的 siteId?【英文标题】:How can I get the siteId of the current site with Microsoft Graph API? 【发布时间】:2018-01-06 11:15:08 【问题描述】:

从文档中,我找不到任何方法来获取我放置 web 部件的站点的 siteId。

例如,

我当前的站点是:https://hostname/sites/main1

我在这里测试我的 webpart:https://hostname/sites/main1/_layouts/15/workbench.aspx

我怎样才能做到这一点?从文档中,

一个站点被寻址为一个唯一标识符,它是以下值的复合 ID:

网站集主机名 (contoso.sharepoint.com)

网站集唯一 ID (guid)

网站唯一 ID (guid)

我可以使用location.hostname 轻松获取主机名(是的,我正在使用 javascript + React 构建我的 webpart)但是如何使用 Graph API 轻松获取站点 ID?

【问题讨论】:

【参考方案1】:

试试这个:https://graph.microsoft.com/v1.0/sites/hostname:/sites/path?$select=id 例如: https://graph.microsoft.com/v1.0/sites/cie493742.sharepoint.com:/sites/Contoso/Operations/Manufacturing?$select=id(这个你可以在 Graph Explorer 上试试。

你在 id 中得到的是这种格式:

hostname,spsite.id,spweb.id

更多信息请点击文档链接:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/site_get

【讨论】:

3 小时搜索的高潮。 This 部分有用,但仅提供站点 ID Microsoft 文档中总是存在某种关闭。它们通常含糊不清或详细到无法理解的程度。 我讨厌微软专门用于文档 如果路径包含空格,例如,在上面的示例中我们有“操作三元”而不是操作,该怎么办?所以 url 原来是“graph.microsoft.com/v1.0/sites/cie493742.sharepoint.com:/sites/…ternary/Manufacturing?$select=id”,这是行不通的!! @WouldBeNerd @KhushbooMulani 在 url 空间中通常用 %20 表示,但我不确定这是否会为您解决。【参考方案2】:

在经典网站上使用spPageContextInfo

(location.host + "," + _spPageContextInfo.siteId + "," + _spPageContextInfo.webId).replace(/[\\]/g, "")

【讨论】:

这也适用于现代网站。请注意,只有当您导航到相关网站集(或其网站页面之一)时,您才能获得正确的网站 ID【参考方案3】:

您可以通过以下 Graph Http Get API 获取 Site-id 的另一种方式。

https://graph.microsoft.com/v1.0/sites

【讨论】:

太棒了!为我工作。【参考方案4】:

您无需调用 Graph API 即可获取当前站点的 siteId。它在PageContext 中可用。

在 webpart 的主类中,您可以在以下位置找到它:

this.context.pageContext.site.id

【讨论】:

以上是关于如何使用 Microsoft Graph API 获取当前站点的 siteId?的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Graph API - 如何将附件上传到列表项

Microsoft Graph API calendarView 是不是仅限于一个月?如何获取所有事件?

Azure Developer使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

MS Graph API:microsoft.graph.createLink 未创建匿名视图链接

如何使 Azure AD access_token 在 Microsoft Graph API 之外对其签名验证兼容?

使用 microsoft graph api 检出 onedrive 文件的状态