我不知道如何给一个应用程序读写访问一个Sharepoint站点。
下面是我所做的。
Client error: `PUT https://graph.microsoft.com/v1.0/drives/b!XxxxxxxxxxxxxxxxB/items/root:/StationMD%20Addl%20Enrollees%2020200508.xlsx:/content` resulted in a `403 Forbidden` response:
{
"error": {
"code": "accessDenied",
"message": "Access denied",
"innerError": {
奇怪的是,我能够以创建网站的用户身份进行操作,但不能以虚拟用户(他也有读写文件的权限)的身份进行操作。
所以...
问题似乎是应用程序的权限。是否有办法只为那个sharepoint站点设置应用程序权限,还是Files.ReadWrite.All是我唯一的选择?我可以为当前未登录但通过OAuth2认证的用户使用委托权限吗?
更多信息 51620
我有两个用户。一个是我的常规账户,我用来创建Sharepoint网站。另一个是用于上传文件的 "服务帐户"。两个用户都可以使用 GUI 编辑上传删除文件。然而,当使用 API 时,服务用户不能上传文件,而普通用户可以。我确保两个用户都是网站的成员。使用 图形浏览器我可以看到驱动器。
https://graph.microsoft.com/v1.0/drives/b!XXXXxxxxx
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives/$entity",
"createdDateTime": "2020-04-26T11:19:17Z",
"description": "",
"id": "b!XXXXXxxxxx",
"lastModifiedDateTime": "2020-05-16T11:56:23Z",
"name": "Documents",
"webUrl": "https://xxxxxxx.sharepoint.com/sites/sftp/Shared%20Documents",
"driveType": "documentLibrary",
"createdBy": {
"user": {
"displayName": "System Account"
}
},
"owner": {
"group": {
"email": "[email protected]",
"id": "xxxxx-xx-xxxx-xxxx-xxxxxxxx",
"displayName": "sftp Owners"
}
},
"quota": {
"deleted": 2812850,
"remaining": 27487773843447,
"state": "normal",
"total": 27487790694400,
"used": 8848121
}
}
自从我使用SharePoint以来,已经有相当长的一段时间了,但我会尝试为Azure AD相关的问题进行解答。
奇怪的是,我能够作为创建站点的用户来做这件事,但不是作为一个虚拟用户(他也有读写文件的权限)。
这很奇怪。我希望调用与应用程序的权限工作:\\。
有没有办法只为那个sharepoint站点设置应用权限,或者Files.ReadWrite.All是我唯一的选择?
这个我不清楚.你可以给应用程序委托权限Files.ReadWrite.All,允许你访问修改任何用户可以的文件,或者你可以给应用程序权限Files.ReadWrite.All,允许应用程序访问修改任何站点集合中的任何文件。
我可以为当前未登录但通过OAuth2认证的用户使用委托权限吗?
简而言之,是的。如果他们至少认证过一次你的应用程序,当他们认证时,你得到了该用户的刷新令牌,安全地存储该刷新令牌,并在需要时使用它来获得新的访问令牌。