通过 ASP.NET 访问 Sharepoint Online 文档列表
Access Sharepoint Online document list through ASP.NET
关于这个主题我已经搜索了很长时间,但没有找到灵丹妙药。我们在 ASP.NET 中有一个 Intranet 解决方案,我们只想在 Office 365 中显示来自 Sharepoint Online 的一些文件。
当您在 Google 上搜索它时,有很多匹配项,但似乎没有什么是 "simple" 的方法。我不是 Sharepoint 开发人员,但在管理我们公司的 Office 365 和 Sharepoint Online 安装时对这些概念有很好的理解。
我找到的当前答案告诉我 REST 服务是可行的方法,但在这里我需要一个 OATH 令牌才能访问它们,而这正是我的 Sharepoint 知识有限的地方。据我所知,令牌只能通过已安装的 Sharepoint 应用程序授予,但我知道没有它也可以完成。
我已经购买了一个同步工具,可以将我们的文件共享与 Sharepoint 文档列表同步,为此我不需要任何令牌,我只需输入我的凭据,而不必在 Sharepoint 中安装任何东西。
那么我想从这个问题中得到什么?
熟悉 Sharepoint 的人可以引导我朝着正确的方向前进,并且可能有指导并且知道该方法有效。也许 REST 是正确的方式,但我的 Sync 软件没有 REST 就可以做到这一点似乎很奇怪。
如果我确实需要在 Sharepoint 中安装令牌授予器,请提供一些帮助,了解安全方面的注意事项以及如何以最佳方式处理它。
非常感谢任何帮助,并提前致谢! :)
Microsoft 有两组可以访问 SharePoint Online 的 API:
SharePoint Client Object Model (CSOM):
有了这个,你可以只使用用户名和密码来进行身份验证。按照 link 您可以找到有关如何访问文档列表的示例。
-
为此,您需要使用 OAuth
令牌进行身份验证。
对于你的情况,你应该使用第一个。
SharePoint Online 还支持基于声明的身份验证模式。这里的一般想法是从用户凭据中获取身份验证 cookie(除了 OAuth 颁发访问令牌的身份验证流程之外)。获得身份验证 cookie 后,您可以对 SharePoint Online 资源执行 authenticated SOAP(例如通过 CSOM API)或 REST 请求,如下所示。
Since you are developing ASP.NET web application,
SharePointOnlineCredentials
class from SharePoint Online Client
Components SDK could be utilized which basically implements
claims-based authentication scheme. It could be installed via nuget
示例 1:通过 CSOM 请求列表项 API
using (var ctx = GetContext(webUri.ToString(), userName, password))
{
var list = ctx.Web.Lists.GetByTitle("Documents");
var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items);
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine(item.FieldValues["FileRef"]);
}
}
哪里
private static ClientContext GetContext(string url,string username, string password)
{
var ctx = new ClientContext(url);
var securePassword = new SecureString();
foreach (char c in password) securePassword.AppendChar(c);
ctx.Credentials = new SharePointOnlineCredentials(username, securePassword);
return ctx;
}
示例 2:通过 REST 请求列表项 API
using (var client = new SPHttpClient(webUri, userName, password))
{
var listTitle = "Tasks";
var endpointUrl = string.Format("{0}/_api/web/lists/getbytitle('{1}')/items",webUri,listTitle);
var data = client.ExecuteJson(endpointUrl);
foreach (var item in data["value"])
{
Console.WriteLine(item["Title"]);
}
}
哪里
SPHttpClient.cs
- 为 SharePoint Online 实施 HTTP 客户端 (SPHttpClient
class)
SPHttpClientHandler.cs
- 为 SharePoint Online 实施 HTTP 处理程序
关于这个主题我已经搜索了很长时间,但没有找到灵丹妙药。我们在 ASP.NET 中有一个 Intranet 解决方案,我们只想在 Office 365 中显示来自 Sharepoint Online 的一些文件。
当您在 Google 上搜索它时,有很多匹配项,但似乎没有什么是 "simple" 的方法。我不是 Sharepoint 开发人员,但在管理我们公司的 Office 365 和 Sharepoint Online 安装时对这些概念有很好的理解。
我找到的当前答案告诉我 REST 服务是可行的方法,但在这里我需要一个 OATH 令牌才能访问它们,而这正是我的 Sharepoint 知识有限的地方。据我所知,令牌只能通过已安装的 Sharepoint 应用程序授予,但我知道没有它也可以完成。 我已经购买了一个同步工具,可以将我们的文件共享与 Sharepoint 文档列表同步,为此我不需要任何令牌,我只需输入我的凭据,而不必在 Sharepoint 中安装任何东西。
那么我想从这个问题中得到什么?
熟悉 Sharepoint 的人可以引导我朝着正确的方向前进,并且可能有指导并且知道该方法有效。也许 REST 是正确的方式,但我的 Sync 软件没有 REST 就可以做到这一点似乎很奇怪。
如果我确实需要在 Sharepoint 中安装令牌授予器,请提供一些帮助,了解安全方面的注意事项以及如何以最佳方式处理它。
非常感谢任何帮助,并提前致谢! :)
Microsoft 有两组可以访问 SharePoint Online 的 API:
SharePoint Client Object Model (CSOM):
有了这个,你可以只使用用户名和密码来进行身份验证。按照 link 您可以找到有关如何访问文档列表的示例。
-
为此,您需要使用
OAuth
令牌进行身份验证。
对于你的情况,你应该使用第一个。
SharePoint Online 还支持基于声明的身份验证模式。这里的一般想法是从用户凭据中获取身份验证 cookie(除了 OAuth 颁发访问令牌的身份验证流程之外)。获得身份验证 cookie 后,您可以对 SharePoint Online 资源执行 authenticated SOAP(例如通过 CSOM API)或 REST 请求,如下所示。
Since you are developing ASP.NET web application,
SharePointOnlineCredentials
class from SharePoint Online Client Components SDK could be utilized which basically implements claims-based authentication scheme. It could be installed via nuget
示例 1:通过 CSOM 请求列表项 API
using (var ctx = GetContext(webUri.ToString(), userName, password))
{
var list = ctx.Web.Lists.GetByTitle("Documents");
var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items);
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine(item.FieldValues["FileRef"]);
}
}
哪里
private static ClientContext GetContext(string url,string username, string password)
{
var ctx = new ClientContext(url);
var securePassword = new SecureString();
foreach (char c in password) securePassword.AppendChar(c);
ctx.Credentials = new SharePointOnlineCredentials(username, securePassword);
return ctx;
}
示例 2:通过 REST 请求列表项 API
using (var client = new SPHttpClient(webUri, userName, password))
{
var listTitle = "Tasks";
var endpointUrl = string.Format("{0}/_api/web/lists/getbytitle('{1}')/items",webUri,listTitle);
var data = client.ExecuteJson(endpointUrl);
foreach (var item in data["value"])
{
Console.WriteLine(item["Title"]);
}
}
哪里
SPHttpClient.cs
- 为 SharePoint Online 实施 HTTP 客户端 (SPHttpClient
class)
SPHttpClientHandler.cs
- 为 SharePoint Online 实施 HTTP 处理程序