首页 > 解决方案 > 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 而不是其他权限。

标签: javaazuresharepointmicrosoft-graph-api

解决方案


您似乎正在请求此端点将文件上传到 SharePoint。

POST /sites/{siteId}/drive/items/{itemId}/createUploadSession

如果是这样,此API 必须使用Sites.ReadWrite.All应用程序权限。

在此处输入图像描述

即使使用另一个支持最大 4MB 文件的API上传文件,您也需要 Files.ReadWrite.AllSites.ReadWrite.All许可。

Sites.Selected:允许应用程序在没有登录用户的情况下访问网站集的子集。特定网站集和授予的权限将在 SharePoint Online 中配置。

Sites.ReadWrite.All:允许应用程序在没有登录用户的情况下访问网站集的子集。特定网站集和授予的权限将在 SharePoint Online 中配置。


推荐阅读