上载文件时遇到错误:使用“上载”时上载会话失败次数过多;地点。已选定“;在Java程序中将文件上载到共享点的权限

上载文件时遇到错误:使用“上载”时上载会话失败次数过多;地点。已选定“;在Java程序中将文件上载到共享点的权限,java,azure,sharepoint,microsoft-graph-api,Java,Azure,Sharepoint,Microsoft Graph Api,我有一个项目,需要上传文件到选定的共享点网站通过客户端凭据。 我已经应用了一个站点。在我的应用程序上选择了应用程序权限,并使用管理员Azure AD向其授予“写入”角色 { "roles": ["write"], "grantedToIdentities": [{ "application": { "id": "clientid",

我有一个项目,需要上传文件到选定的共享点网站通过客户端凭据。 我已经应用了一个站点。在我的应用程序上选择了应用程序权限,并使用管理员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信息2148---[nio-8082-exec-1]o.s.web.servlet.DispatcherServlet:正在初始化servlet“DispatcherServlet”

2021-05-05 20:28:24.147信息2148---[nio-8082-exec-1]o.s.web.servlet.DispatcherServlet:在10毫秒内完成初始化

现在尝试连接到共享点并上载testing_123.pdf,请稍候

该站点的ID为:siteid站点ID sharepoint站点ID

上传文件时出错:上传会话失败次数太多。


但当我尝试使用Site.ReadWrite.All应用程序权限时,这种方法非常适合上传。有人知道如何解决这个问题吗?要求仅允许使用站点。选择其他权限。

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

POST /sites/{siteId}/drive/items/{itemId}/createUploadSession
如果是这样,则此必须使用
Sites.ReadWrite.All
应用程序权限

即使使用另一个支持最大4MB文件的文件上载文件,您也需要
files.ReadWrite.All
Sites.ReadWrite.All
权限

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

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


是否需要Sites.ReadWrite.All?因为如果使用Sites.ReadWrite.All,程序将能够访问所有站点。是否有任何方法仅允许使用Site.selected权限上载文件?如果使用Microsoft Graph API,则是必需的。此不支持所选站点。您好,@BingHao。我的回答有用吗?如果我的回答有帮助,请接受我的回答,谢谢。