7

我想將SharePoint數據消費到非.Net平臺。爲此,我已經使用了像Lists.asmx,Webs.asmx和search.asmx這樣的SharePoint OOTB服務。 我已經使用Authentication.asmx成功添加了對基於表單身份驗證的支持。 現在,我想爲Office 365 SharePoint提供在線支持。爲此,我有一個演示我正在開發的SharePoint Online網站。 問題,我面對的是,當我用Authentication.asmx的方式方法,我得到的「形式」迴應:身份驗證Office 365 SharePoint Online OOTB服務

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <ModeResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
     <ModeResult>Forms</ModeResult> 
    </ModeResponse> 
</soap:Body> 
</soap:Envelope> 

然而,當我使用Login.asmx,並通過正確的用戶名和密碼,我得到「PasswordNotMatch」錯誤,相同的憑據在瀏覽器中正常工作。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <LoginResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
     <LoginResult> 
     <ErrorCode>PasswordNotMatch</ErrorCode> 
      <TimeoutSeconds>0</TimeoutSeconds> 
     </LoginResult> 
    </LoginResponse> 
</soap:Body> 
</soap:Envelope> 

注意: - 這適用於非FBA非Office 365 SharePoint網站。

有人能幫我實施對Office 365 SharePoint Online OOTB服務的支持嗎?

回答

6

我一直在尋找類似的想法和this thread已經非常有幫助。他們實際上有一個使用PInvoke的webservice示例,它可能會幫助你到達那裏。

編輯:我的搜索引導我到this other post by Wictor Wilen,但現在試圖避免ClientOM。

編輯2:好吧,得到了這個工作。使用上述Wictor的代碼,我下載了他的示例解決方案,並將「MsOnlineClaimsHelper.cs」和「WcfClientContracts.cs」移至我的項目中,稍後我將擺弄這些文件中真正使用的內容。我只更改它們以刪除ClientOM參考,包括clientContext_ExecutingWebRequest方法。

在樣品MVC3應用程序或控制檯應用程序:

MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper("https://my365site.sharepoint.com/sites/enterprise/", "[email protected]", "secret"); 

using (var lists = new SharePointLists.Lists()) 
{ 
    lists.Url = @"https://my365site.sharepoint.com/sites/enterprise/_vti_bin/lists.asmx"; 
    lists.CookieContainer = claimsHelper.CookieContainer; 
    var listCol = lists.GetListCollection(); 
    ViewBag.Message = listCol.InnerXml; 
    //Console.Write(listCol.InnerXml); 
} 
+1

@Kuldeep師哥,我怎麼才能使用SOAP在Office 365基於表單的身份驗證類型?我試圖發送一個有效的用戶名/密碼的SOAP請求到「Authentication.asmx」,但得到了「PasswordNotMatch」。 – surlac

+1

不確定,它是一個簡單的密碼?我會看看編碼,然後嘗試獲取文檔,看他們是否期望密碼或它的散列版本。 –

+1

@ F.Aquino:在少數情況下,Wictors代碼無法正常工作。我遇到此錯誤「訪問被拒絕。在此位置打開文件之前,您必須先瀏覽網站並選擇自動登錄選項。 「 – Syeda

相關問題