7

Tôi muốn sử dụng dữ liệu SharePoint vào một nền tảng không phải .Net. Tôi đã sử dụng các dịch vụ SharePoint OOTB như Lists.asmx, Webs.asmx và search.asmx cho mục đích này. Tôi đã thêm thành công hỗ trợ cho việc xác thực dựa trên biểu mẫu bằng Authentication.asmx. Bây giờ, tôi muốn cung cấp hỗ trợ cho Office 365 SharePoint trực tuyến. Vì mục đích đó, tôi có một trang demo SharePoint Online mà tôi đang làm việc. vấn đề, tôi đang phải đối mặt là khi tôi sử dụng phương pháp Phương thức Authentication.asmx tôi nhận được 'hình thức' để phản ứng:Xác thực các dịch vụ OOTB của Office 365 SharePoint Online

<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> 

Tuy nhiên khi tôi sử dụng Login.asmx và vượt qua tên truy cập và mật khẩu chính xác, tôi nhận được 'PasswordNotMatch' lỗi, các thông tin tương tự cũng hoạt động tốt trong trình duyệt.

<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> 

Lưu ý: - Điều này hoạt động hoàn hảo cho trang FBA không phải Office 365 SharePoint.

Ai đó có thể giúp tôi trong việc triển khai hỗ trợ cho các dịch vụ OOTB của Office 365 SharePoint Online?

Trả lời

6

Tôi đã xem xét một ý tưởng tương tự và this thread đã vô cùng hữu ích. Họ thực sự có một mẫu webservice bằng cách sử dụng PInvoke, nó có thể giúp bạn đạt được điều đó.

Chỉnh sửa: tìm kiếm của tôi đã dẫn tôi đến this other post by Wictor Wilen, nhưng cố gắng tránh ClientOM ngay bây giờ.

Chỉnh sửa2: được, làm việc này. Sử dụng mã từ Wictor ở trên, tôi đã tải về giải pháp mẫu của mình và chuyển "MsOnlineClaimsHelper.cs" và "WcfClientContracts.cs" vào dự án của tôi, tôi sẽ không quan tâm đến những gì thực sự được sử dụng từ các tệp này sau này. Tôi chỉ thay đổi chúng để loại bỏ các tham chiếu ClientOM bao gồm phương thức clientContext_ExecutingWebRequest.

Trong một ứng dụng MVC3 mẫu hoặc ứng dụng Console:

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 Shige, thế nào tôi sẽ được chứng thực với Mẫu Dựa loại trên Office 365 sử dụng SOAP? Tôi đã cố gắng gửi một yêu cầu SOAP hợp lệ với tên người dùng/mật khẩu để "Authentication.asmx", nhưng có "PasswordNotMatch". – surlac

+1

Không chắc chắn, đó có phải là một mật khẩu đơn giản không? Tôi sẽ xem xét mã hóa và sau đó cố gắng để có được các tài liệu để xem nếu họ mong đợi mật khẩu hoặc một phiên bản băm của nó. –

+1

@ F.Aquino: Mã độc tài không hoạt động trong vài trường hợp của Office 365. Tôi nhận được lỗi này "Truy cập bị từ chối. Trước khi mở tệp ở vị trí này, trước tiên bạn phải duyệt đến trang web và chọn tùy chọn đăng nhập tự động. " – Syeda

Các vấn đề liên quan