【发布时间】:2015-09-09 22:14:54
【问题描述】:
我正在尝试从桌面应用程序(跨平台、跨操作系统)使用 SharePoint 2013 REST 服务。应用程序基本上是应用程序视图中的 HTML 页面。 有没有一种简单的方法可以使用 HTTP 方法对我的调用进行身份验证?
【问题讨论】:
标签: authentication oauth-2.0 sharepoint-2013
我正在尝试从桌面应用程序(跨平台、跨操作系统)使用 SharePoint 2013 REST 服务。应用程序基本上是应用程序视图中的 HTML 页面。 有没有一种简单的方法可以使用 HTTP 方法对我的调用进行身份验证?
【问题讨论】:
标签: authentication oauth-2.0 sharepoint-2013
是的,您可以通过 REST 调用获得身份验证并接收摘要。
string url = "http://Your.SP.Site";
HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
client.BaseAddress = new System.Uri(url);
string cmd = "_api/contextinfo";
client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
client.DefaultRequestHeaders.Add("ContentType", "application/json");
client.DefaultRequestHeaders.Add("ContentLength", "0");
StringContent httpContent = new StringContent("");
var response = client.PostAsync(cmd, httpContent).Result;
if (response.IsSuccessStatusCode)
{
string content = response.Content.ReadAsStringAsync().Result;
JsonObject val = JsonValue.Parse(content).GetObject();
JsonObject d = val.GetNamedObject("d");
JsonObject wi = d.GetNamedObject("GetContextWebInformation");
retVal = wi.GetNamedString("FormDigestValue");
}
上面的示例展示了如何使用 HttpClient 在 C# 中检索摘要。需要将此字符串作为标头传递给您进行的所有其他其余调用以进行身份验证。如果需要,您可以通过传入用户名和密码来创建凭据。
这里有更多例子:
您也可以在 JavaScript 中执行这些调用,Microsoft 对此有很多文档。还有 .NET 库 Microsoft.SharePoint.Client.DLL (CSOM) 可简化此类编码,但您必须在客户端上安装该库。
【讨论】: