首页 > 解决方案 > 如何将 SharePoint 访问令牌从逻辑应用传递到 HTTP 终结点

问题描述

我有一个逻辑应用程序,它每 15 分钟触发一次我的 HTTP 端点。然后端点使用 Rest API 连接到 SharePoint 并从特定列表中获取数据,然后将其添加到我的数据库中。

但要从 SharePoint 获取数据,我需要访问令牌。我是否需要编写逻辑来获取端点本身的访问令牌?或者在触发我的端点时是否有任何可以从我的逻辑应用程序传递访问令牌?

标签: sharepoint-2013sharepoint-onlineazure-logic-apps

解决方案


作为第一个答案。是的,使用 SharePoint Online REST API 实施逻辑以在 HTTP 端点中获取访问令牌。通过这样指南可以是1、2、3、4 _ 我认为不存在将访问令牌从 Azure 逻辑应用程序传递到端点的任何方法。

作为第二个答案,我可以建议使用 SharePoint CSOM 对象模型。要使用它,只需在 HTTP 端点所在的计算机上安装SharePoint Online 客户端组件 SDK ,然后添加 Microsoft.SharePoint.Client.dll Microsoft.SharePoint.Client.Runtime.dll 库作为参考。存在很好的 SharepointOnlineCredentials 类来为请求提供凭据。

或其他方式 - 您可以重新构建您的解决方案:

  1. 如果我理解正确,Azure 逻辑应用程序必须要求您通过开箱即用的功能设置与 SharePoint 的连接。见这篇文章。我认为您可以通过 Azure Logic App 中的操作从 SharePoint 获取列表项,并将数据传递到您的 HTTP 端点,而无需任何额外的访问令牌请求,就像方法参数一样。
  2. 如果您可以从 SharePoint 访问 HTTP 终结点,则可以将数据从 SharePoint 直接发送到您的终结点,而不是从 Azure 逻辑应用。您可以从列表项表单页面、站点工作流或某些 Flow 模板中执行此操作。
  3. 如果您无法从 SharePoint 访问 HTTP 端点,那么您可以创建 Azure 托管的 Web 服务并以任何方式从 SharePoint 调用其方法。此 Web 服务会将数据作为方法参数传递到您的 HTTP 端点,而无需任何额外的身份验证。Web 服务调用将从 SharePoint 工作流中的列表项表单保存上的 JavaScript 完成。可能在这里获取此 Azure Web 服务的访问令牌会比从 HTTP 端点到 SP 更容易。
  4. 你在使用 Azure SQL 数据库吗?如果是,则通过 Business Connectivity Services BCS 在 SharePoint Online 和 Azure SQL 数据库之间创建连接。喜欢这里这里这里。这允许用户通过开箱即用的功能在 SharePoint 列表中内联的数据库中获取、创建和更新项目。
  5. 创建定期运行的代码(控制台应用程序、PowerShell 脚本、Windows 服务)。将其安排在您公司的某个服务器上。该代码将使用 CSOM SharePoint 对象模型并通过 SharepointOnlineCredentials 类更轻松地连接到 SharePoint,获取数据并直接连接到您的 HTTP 端点或连接到您的数据库。
  6. 如果您的数据库是位于本地的 MS SQL Server,那么您可以使用本指南在 SharePoint Online 和本地 SQL Server 之间创建 Business Connectivity Services 内容类型。

你可以走一些奢侈的方式:=)

  1. SharePoint 通过某些方式可以将包含列表项数据的电子邮件发送到某个收件箱,您的 HTTP 端点可以获取这些电子邮件、解析数据并执行以下步骤。
  2. 可能您可以在某些公司本地 MS SQL Server 上创建 Sql Server 集成服务 (SSIS) 包,该包将定期将来自 SharePoint 的数据直接发送到您的数据库或直接发送到您的 HTTP 端点。
  3. 其他方法...

推荐阅读