【问题标题】:SharePoint API: Invalid Access Token ResourceSharePoint API:访问令牌资源无效
【发布时间】:2020-09-10 00:26:10
【问题描述】:

我正在尝试获取用于 SharePoint Rest API 的访问令牌。对于我的组织基地。我能够获得一个令牌并使用该令牌成功地发出后续请求。

接下来,我按照相同的流程为不同的网站创建了更多应用权限{{tenant removed}}/sites/testsite。我最初无法创建令牌请求,因为资源参数无效(见下图):

根据 URI 编码标准,我将站点 url 中的“/”替换为“%2f”,并且我能够获得一个令牌(见下图):

然而,接下来使用该令牌向 API 发出的请求失败:

{
"error_description":
"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."
}

在响应头中:

3000003;reason="无效的观众 Uri '00000003-0000-0ff1-ce00-000000000000/{{租户 已移除}}%2fsites%2f{{已移除}}@{{realm 删除}}'。";category="invalid_client"

我是否对资源进行了错误编码?我错过了什么?如何使用此方法从其他站点获取信息?

【问题讨论】:

    标签: sharepoint postman token sharepoint-api


    【解决方案1】:

    我可以看到许多开发人员在创建请求时做出相同的假设,因为几乎所有文档都没有指出这种情况。只要资源采用有效的 uri 格式,您就可以成功获取站点的令牌,并且不会对 uri 本身进行验证。即使您获得令牌,它也不适用于任何请求。

    获取子站点的访问令牌时(即:{{tenant}}/sites/testsite)。请求体的资源部分不需要修改。

    因此,例如,当您获得test.sharepoint.com/sites/testsite 的令牌时,请求正文的resource 应该是:

    00000003-0000-0ff1-ce00-000000000000/test.sharepoint.com@{{realm}}(没有/sites/testsite

    但是,当您使用令牌向 API 发出 HTTP 请求时,您应该使用完整的站点名称。示例:

    https://test.sharepoint.com/sites/testsite/_api/web/

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 1970-01-01
      • 2020-09-11
      • 2021-12-26
      • 2018-12-26
      • 1970-01-01
      • 2017-11-02
      • 2018-02-06
      • 2020-10-30
      相关资源
      最近更新 更多