java - Face Error uploading file: Upload session failed too many times when using "Site.Selected" Permission to uploading file to Share Point in Java Program
问题描述
我有一个项目需要通过客户端凭据将文件上传到选定的共享点站点。我已经在我的 APP 上应用了 Site.Selected Application Permission,并使用 Admin Azure AD 授予它“写入”角色。
{
"roles": ["write"],
"grantedToIdentities": [{
"application": {
"id": "clientid",
"displayName": "blobtest"
}
}]
}
以下是从提供者获取访问令牌的方法
public IGraphServiceClient getAuthProvider() {
IAuthenticationProvider mAuthenticationProvider;
try {
String accessToken = getAuthToken();
mAuthenticationProvider = request -> request.addHeader("Authorization",
"Bearer " + accessToken);
} catch (Exception e) {
throw new Error("Could not create a graph client: " + e.getLocalizedMessage());
}
IGraphServiceClient graphClient =
GraphServiceClient
.builder()
.authenticationProvider(mAuthenticationProvider)
.buildClient();
return graphClient;
}
但是,在出现以下结果时,上传遇到了一些问题。
2021-05-05 20:28:24.137 INFO 2148 --- [nio-8082-exec-1] osweb.servlet.DispatcherServlet:初始化 Servlet 'dispatcherServlet'
2021-05-05 20:28:24.147 INFO 2148 --- [nio-8082-exec-1] osweb.servlet.DispatcherServlet:在 10 毫秒内完成初始化
现在尝试连接到 Share Point 并上传 testing_123.pdf,请稍候...
该站点的 ID 是:siteid-site-id-sharepoint-siteid
上传文件时出错:上传会话失败太多次。
但是当我尝试使用 Site.ReadWrite.All Application Permission 时,这种方法非常适合上传。有谁知道如何解决这个问题?要求仅允许使用 Site.Selected 而不是其他权限。
解决方案
您似乎正在请求此端点将文件上传到 SharePoint。
POST /sites/{siteId}/drive/items/{itemId}/createUploadSession
如果是这样,此API 必须使用Sites.ReadWrite.All
应用程序权限。
即使使用另一个支持最大 4MB 文件的API上传文件,您也需要 Files.ReadWrite.All
或Sites.ReadWrite.All
许可。
Sites.Selected:允许应用程序在没有登录用户的情况下访问网站集的子集。特定网站集和授予的权限将在 SharePoint Online 中配置。
Sites.ReadWrite.All:允许应用程序在没有登录用户的情况下访问网站集的子集。特定网站集和授予的权限将在 SharePoint Online 中配置。
推荐阅读
- android - 如何在 Jetpack Compose 中暂停 MediaPlayer
- django - 主路径时弹出 serviceworker.js
- c# - 串行端口等待程序 - 如果设备在 5 秒内没有响应,则取消 | 当标志不改变时
- mysql - 从 MySQL 中的连接表中计算 null
- python - 为什么 normalizedDifference 和简单的波段操作会在 Google Earth Engine 上产生不同的结果?
- typescript - 反应 - 如果乘以一行
- c# - 完成后从统一中删除菜单项
- azure - 如何在 api 网关架构中获取 JWT 令牌
- vagrant - vagrant - 内存和 CPU 定义不起作用
- python - Pyinstaller 隐藏模块未找到错误