从Azure函数验证和调用Sharepoint Online Api

时间:2017-05-19 14:17:41

标签: azure sharepoint microsoft-graph azure-functions

我希望在Sharepoint Online上添加文档/文件时触发自定义操作。我的想法是使用Microsoft Flow,但由于Flow不允许您使用添加的文件的自定义列(只是标题,添加的日期,内容类型等),我想要调用Sharepoint API手动,通过Azure功能。所以步骤将是:

1)用户在Sharepoint Online上的文档库中添加新文档

2)在添加该文档后触发Microsoft Flow。

3)Flow调用Azure Function并将文档id传递给它。

4)该函数对Microsoft Graph Api进行身份验证,然后请求具有该id的文件。

5)该函数获取自定义字段,然后使用该文件的自定义参数执行某些操作。

但是,我一直在尝试进行身份验证,但它总是要求我放置用户并传递HTML。当然,Azure功能无法做到这一点。如何轻松验证Microsoft Graph API?我坚持这一点。

还有其他选择吗?正如我之前所说的,这是我一直在考虑的一种解决方法,因为Microsoft Flow不允许您获取最近添加/修改的文件的自定义字段,只是默认的...但我只是想做什么是在添加新文件时管理这些数据。解决方案不一定需要使用函数或Microsoft Graph Api。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以通过URL在Sharepoint中将该功能或远程Web(Azure或内部部署)注册为应用程序: 的“http://.sharepoint.com/_layouts/15/AppRegNew.aspx

通过以下方式授予权限:

的http://.sharepoint.com/_layouts/15/AppInv.aspx

例如:

    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

通过这种方式,您将能够访问您的租户或列表或您的权限。

答案 1 :(得分:0)

目前还没有很好的方法来进行身份验证 - 我们正在努力为此提供支持。困难的部分是AD身份验证,任何解决方案都需要处理。我们正在做一些事情来使功能变得容易。

您可以为auth做的是获取脱机访问权限,授予您访问刷新令牌的权限,然后使用刷新令牌获取您的访问令牌。您可以通过Azure网站现有的EasyAuth令牌存储(https://cgillum.tech/2016/03/07/app-service-token-store/)来构建此方法。然后,您可以登录一次,将刷新令牌保存在EasyAuth的令牌存储中,并且该功能可以在每次执行时从中拉出它。 这是高级答案。如果你现在急于这样做,我可以详细说明更具体的步骤。

答案 2 :(得分:0)

您所寻求的是app-only authentication。如果您可以通过SharePoint Rest API进行文档查询/更新,那么您有两个选项:

  1. Granting access via Azure AD App-Only
  2. Granting access using SharePoint App-Only(这与@netadictos上面的答案中指出的方法相同。)
  3. 如果您希望使用MS Graph API进行文档查询/更新,则只有#1是一个选项。 #1涉及更多,因为它需要客户端密钥和自签名安全证书。 #2只需要app / client ID和密码。

    上面链接的MSDN文档使用PowerShell脚本生成安全证书,但我更喜欢Bob German's instructions来手动创建/导出证书。他还在其教程中包含了为Azure功能注册Azure AD应用程序的说明。