我会重视一些建议,因为当我们请求对 Office 365 MySites 网站集的委派管理访问权限时,我们正面临Office 365 API的问题,它返回 500 错误。
用例场景如下: 我们有独立的组织“A”和“B”,它们都拥有各自的 Azure Active Directory 帐户和 O365/Azure 订阅。组织 B 希望使用提供组织 A 的应用程序,该应用程序需要对其 Office365 MySites 站点集合的委托管理访问权限。
组织 B 通过使用 OAuth2 授权过程成功地将应用程序添加到其 Active Directory 帐户,授予应用程序对其公司 Active Directory 所需的权限。
最后一部分是将组织 B 中的管理员帐户的访问权限委派给组织 B 的 Office 365 帐户中的 Mysites 网站集。如果我们通过管理面板使用手动过程一切正常,尽管通过 API 以编程方式我们收到“500”错误。
我们正在使用以下调用以编程方式将用户添加为网站集管理员:(请注意:我在下面使用了 [dummmy id's])
端点网址:
https://<..org_a..>.my.sharepoint.com/personal/[[user_OrganisationA_com]]/_api/web/siteUsers/getByEmail(@u)?@u='[[info@_OrganisationA.com' ]] 方法:POST
Body: {'__metadata':{ 'type': 'SP.User' }, 'IsSiteAdmin':'true'}
HTTP Headers:
• "Content-Type": "application/json; odata=verbose"
• "X-HTTP-Method": "MERGE"
• "Authorization": "Bearer <OAuth2 token>"
• "Accept": "application/json"
根据上述请求,我们尝试将 info@_organisationB.com 作为网站集管理员添加到 One Drive for Business 服务中的 UserC 个人网站(UserC 由电子邮件 UserC@_organisationB.com 标识)。用户 info@_organisationB.com 在组织 B 的 Office365 域中具有全局管理员权限,而 UserC@_organisationB.com) 是没有管理员权限的基本用户。
该调用返回 500 HTTP 状态代码(内部服务器错误)和以下消息:
object(stdClass)[18]
public 'odata.error' =>
object(stdClass)[19]
public 'code' => string '-2146232832, Microsoft.SharePoint.SPException' (length=45)
public 'message' =>
object(stdClass)[20]
public 'lang' => string 'en-US' (length=5)
public 'value' => string 'You need to be a site collection administrator to set this property.' (length=68)
据我们所知,API 调用永远不应该返回 500 HTTP 状态代码(内部服务器错误),如果不允许我们做我们想要做的事情,它应该提供 Insufficiente 权限消息或类似消息,但是,我们可以手动应用这一事实通过 SharePoint Online 管理门户让我们相信我们遇到了一个阻止我们实现预期目标的错误。
任何建议将不胜感激!