2016-10-19 42 views
1

我一直在尋找這個主題的相當一段時間,但沒有找到銀色的子彈。我們在ASP.NET中有一個Intranet解決方案,我們只想在Office 365中顯示我們在Sharepoint Online上的一些文件。通過ASP.NET訪問Sharepoint在線文檔列表

在Google上搜索它時有很多點擊,但似乎沒有任何「簡單「要走的路。我不是Sharepoint開發人員,但在管理公司的Office 365和Sharepoint Online安裝時對這些概念有了很好的理解。

我發現目前的答案告訴我REST服務是要走的路,但在這裏我需要一個OATH令牌來訪問它們,這就是我的Sharepoint知識有限的地方。從我讀過的令牌只能通過已安裝的Sharepoint應用程序授予,但我知道一個事實,即使沒有它也可以完成。 我購買了一個同步工具,可以將我們的文件共享與Sharepoint文檔列表同步,爲此我不需要任何令牌,只需鍵入我的憑據,而不必在Sharepoint中安裝任何內容。

那麼我想從這個問題中得到什麼?

  • 有人知道Sharepoint很好地引導我走向正確的方向,誰可能有指導並知道該方法的工作原理。也許REST是正確的路要走,但我的同步軟件可以做到這一點似乎很奇怪。

  • 如果確實需要在Sharepoint中安裝一個令牌授權器,請在安全方面有所瞭解,以及如何以最佳方式解決問題。

任何幫助非常感謝和提前感謝! :)

回答

0

SharePoint Online還支持基於聲明的身份驗證模式。此處的一般想法是從用戶憑證獲取身份驗證Cookie(除了發出訪問令牌的OAuth身份驗證流程外)。一旦獲得身份驗證cookie,您可以執行經過身份驗證的 SOAP(例如,通過CSOM API)或針對SharePoint Online資源的REST請求,如下所示。

既然你正在開發ASP.NET Web應用程序, SharePointOnlineCredentials classSharePoint Online Client Components SDK可以利用這基本上實現了 基於聲明的身份驗證方案。它可以經由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類)

SPHttpClientHandler.cs - 實現SharePoint Online的

+1

感謝一堆!那正是我期待的! :) –

1

微軟有兩個組API可以訪問SharePoint Online:

  1. SharePoint Client Object Model,這一個,你可以只使用用戶名和密碼做認證;請按照鏈接找到如何訪問文檔列表的示例

    1. SharePoint REST api,有了這個,您需要OAuth令牌來執行身份驗證。

對於你的情況,你應該使用第一個。

+0

感謝您的:)很抱歉我遲到的答覆我已經離開了幾天HTTP處理程序,但非常感謝幫助:) –