从守护程序应用程序访问SharePoint Online文件

时间:2016-07-12 23:31:06

标签: office365 sharepoint-online microsoft-graph

守护程序应用程序(仅限应用程序,没有经过身份验证的用户)是否可以通过Microsoft Graph API访问SharePoint Online内容?如果没有,我的选择是什么?

我试过了:

https://graph.microsoft.com/v1.0/drives/<id>

但拒绝访问。

通过以下方式访问Office 365组中的驱动器:

https://graph.microsoft.com/v1.0/groups/<id>/drive

这是我检索授权令牌的方式:

https://login.microsoftonline.com/<tenant id>/oauth2/token
resource=https://graph.microsoft.com
grant_type=client_credentials
client_id=<client id>
client_secret=<client secret>

2 个答案:

答案 0 :(得分:0)

您可以阅读群组文件的原因是仅限应用令牌具有 Group.Read.All 规则。没有像 Files.Read.All 这样的应用范围允许应用读取SharePoint在线网站上的所有文件。

目前,Microsoft Graph API仅支持使用委托令牌将文件归属于他/她自己或其他人共享给他/她自己的文件。

如果您希望应用获取文件并非用户登录,则可能的解决方法是您可以在第一时间手动获取访问令牌和刷新令牌并将其保存在应用中。然后,您可以使用访问令牌调用REST API,并在过期时续订访问令牌/刷新令牌。

如果您需要此功能,可以从here提交反馈。

答案 1 :(得分:0)

您检查了Build service and daemon apps in Office 365。基本思想是创建Azure AD应用程序以使用仅限App的令牌。以下是步骤摘要:

  • 创建Azure AD应用
  • 创建证书以保护您的令牌请求流程。你需要 更新Azure AD App清单文件中的证书信息。
  • 配置Azure AD App的配置以允许某些权限 在“应用程序权限”列表下。

通过使用仅限应用程序令牌,您的应用程序可以代表Azure AD中的其他用途。您可以调用https://graph.microsoft.com/v1.0/{user's UPN or ID}/drive/root/children来获取基于Graph API的用户文件。我尝试过这种方法来访问SharePoint列表和文档库中的内容。当我更新列表项或文档时,“已修改者”显示为该Azure AD应用程序的名称。 我还使用相同的方法访问outlook以代表服务帐户发送电子邮件。有关详细信息,请参阅Send email on behalf of a service account using Office Graph API

我希望它有所帮助,如果您对仅限app的令牌配置有疑问,请告诉我。