sharepoint - 向共享点询问列表中的项目时出现 UnauthorizedAccessException
问题描述
我正在尝试访问我的共享点站点中的列表项。我在“ https://XXXXXX.sharepoint.com/sites/XXXXX/_layouts/15/appregnew.aspx ”页面上创建了一个clientId和一个secretId。然后我在“ https://XXXXX.sharepoint.com/sites/XXXXX/_layouts/15/appinv.aspx ”页面上创建访问规则。在此页面上,我为访问规则设置了 XML 代码,如下所示:
<AppPermissionRequests><AppPermissionRequest
Scope="http://sharepoint/content/sitecollection"
Right="FullControl"/></AppPermissionRequests>
我创建规则并在下一页确认。
在我的应用程序中,我使用此代码获取令牌
let payload = `grant_type=client_credentials
&client_id=${clientId}@${tenantId}
&client_secret=${clientSecret}
&resource=${resource}/${domain}@${tenantId}`;
let authOptions = {
hostname: 'accounts.accesscontrol.windows.net',
path: `/${tenantId}/tokens/OAuth/2`,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(payload)
}
};
let req = https.request(authOptions, res => {...})
然后我这样做是为了获取列表中的项目:
let listOptions = {
hostname: 'XXXXX.sharepoint.com',
path: '/sites/XXX/_api/lists/getbytitle('MyList')/items',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `bearer ${accessToken}`,
'Accept': 'application/json'
}
};
let req = https.request(listOptions, res => {
res.setEncoding('utf8');
let stringResult = '';
res.on('data', chunk => {
stringResult += chunk.toString();
});
Sharepoint 总是返回这个错误
"{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"Access denied. You do not have permission to perform this action or access this resource."}}}"
解决方案
我终于找到了为什么它不起作用。我需要添加 AllowAppOnlyPolicy :
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
推荐阅读
- vue.js - 如何集成paypal Payment Button Vuejs3 Composition API(设置功能)
- python - 使用 Python asyncio corurrent 发送网络请求时,如何让协程优先继续处理响应,而不是发送新请求?
- angular - 将谷歌分析添加到角度给出了一些错误消息。我的项目中缺少什么?
- python - Kivy Python 中的屏幕管理器问题
- schema - avro、orc、parquet 格式的模式演变
- python - Django Graphql Auth 未登录用户
- universal-analytics - 我应该同时使用谷歌分析 4(GA4)和通用分析(UA)吗
- laravel - 此路由不支持 GET 方法。支持的方法:POST。当我想输入数据时
- javascript - 如何在 WebGL 的剪辑空间坐标中找到当前输出像素位置?
- excel - VBA 错误 438 对象在尝试从网站抓取网页时不支持此属性或方法