【问题标题】:Face Error uploading file: Upload session failed too many times when using "Site.Selected" Permission to upload file to Share Point in Java ProgramFace Error uploading file: Upload session failed too many times when using "Site.Selected" Permission to uploading file to Share Point in Java Program
【发布时间】:2021-05-05 12:45:28
【问题描述】:

我有一个项目需要通过客户端凭据将文件上传到选定的共享点站点。 我在我的 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] os.web.servlet.DispatcherServlet:初始化 Servlet 'dispatcherServlet'

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

现在尝试连接到 Share Point 并上传 testing_123.pdf,请稍候...

站点的 ID 是:siteid-site-id-sharepoint-siteid

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

但是当我尝试使用 Site.ReadWrite.All 应用程序权限时,这种方法非常适合上传。有谁知道如何解决这个问题?要求是只允许使用 Site.Selected 而不是其他权限。

【问题讨论】:

    标签: java azure sharepoint microsoft-graph-api


    【解决方案1】:

    您似乎正在请求此端点将文件上传到 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。

    【讨论】:

    • Sites.ReadWrite.All 是必需的吗?因为如果使用 Sites.ReadWrite.All,程序将能够访问所有站点。是否有任何方法允许仅通过拥有 Site.selected 权限来上传文件?
    • 如果使用 Microsoft Graph API,这是必要的。不支持 Sites.Selected。
    • 嗨,@BingHao。我的回复有帮助吗?如果我的回复对您有帮助,请采纳为答案,谢谢。
    猜你喜欢
    • 2011-07-25
    • 2022-12-02
    • 2021-12-09
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    相关资源
    最近更新 更多