我一直在努力尝试从我们公司的安全 Sharepoint 下载安全文件。
我已执行以下步骤,但在尝试下载时仍然收到 AudienceUriValidationFailedException。
请参阅下面的我的流程。
我迫切需要一些指导。我错过了一个步骤吗?我是不是忘记了什么?使用了错误的客户端密钥?
我使用“https://[公司名称]-admin.sharepoint.com/_layouts/15/appinv.aspx”将应用程序添加到我的公司 SharePoint。我使用 Azure 应用程序注册中的“应用程序(客户端)ID”字符串。我单击“查找”按钮,然后出现“标题”字段
当您为
Microsoft graph生成访问令牌并将其用于运行 SharePoint 请求时,出现错误AudienceUriValidationFailedException
。
要解决该错误,请使用以下Graph API查询从站点下载文件:
GET https://graph.microsoft.com/v1.0/sites/<siteID>/drives/<doclib driveID>/root/children/<filename>
我的 SharePoint 网站中有一个文档库,其中包含
logo.jpg
文件,如下所示:
要使用不记名令牌通过 REST API 下载此文件,我注册了一个 Azure AD 应用程序并添加了 API permissions
现在我通过 Postman 使用以下参数生成了
访问令牌:
POST https://login.microsoftonline.com/tenantID/oauth2/v2.0/token
client_id:appID
client_secret:secret
scope: https://graph.microsoft.com/.default
grant_type:client_credentials
回复:
我在运行下面的图形查询时使用了这个令牌,并在
response 中获得了
logo.jpg
的文件下载链接,如下所示:
GET https://graph.microsoft.com/v1.0/sites/<siteID>/drives/<doclib driveID>/root/children/<filename>
回复:
当我从浏览器中的响应中运行
downloadUrl时,文件下载成功,如下所示:
您可以使用下面的图形查询来获取您网站的 ID:
GET https://graph.microsoft.com/v1.0/sites/root:/sites/<sitename>
回复:
同样,您可以使用以下查询来获取文档库的
驱动器ID:
GET https://graph.microsoft.com/v1.0/sites/<siteID_from_above_response>/drives
回复:
https://<tenantname>.sharepoint.com/.default
。这应该可以解决当前配置的问题,并且您将能够使用 Sharepoint REST API (docs)。 但是,如果您想使用 Graph API(其中范围是您在步骤 5 中的屏幕截图中的范围)(
docs),您应该添加到在 Azure AD > API 权限 > 应用程序中注册的应用程序,而不是步骤 3,4 > Microsoft Graph API > 选择您可能需要的特定权限(user.read, mail.read, file.readwrite
等)您也可以使用委托级别的权限,但在这种情况下获取访问令牌的方式不同,而不是
client_credentials