7

Tôi đang cố gắng sử dụng Dịch vụ Web Exchange để truy cập dữ liệu lịch, nhưng dường như tôi không biết cách truy cập các lịch đã được người dùng khác chia sẻ khi không phải là lịch mặc định của họ. Giả sử một người dùng khác trong công ty của tôi đã tạo lịch được chia sẻ và chia sẻ lịch đó với tôi, tôi thậm chí không thể tìm thấy thư mục lịch, hãy để một mình nhận các mục trong đó.EWS: Truy cập các lịch được chia sẻ

Câu trả lời có thể là về API được quản lý EWS (phiên bản 1.0 hoặc 1.1), các đối tượng dịch vụ trực tiếp hoặc thậm chí chỉ nội dung XML của thông báo SOAP cần được gửi tới máy chủ. Tôi chỉ cần một số loại điểm khởi đầu. Mọi sự trợ giúp sẽ rất được trân trọng.

Trả lời

3

Điều này khá phức tạp, vì bạn cần FolderId của thư mục được đề cập. Ngoài việc truy cập vào thư mục lịch, bạn sẽ cần quyền truy cập đọc vào thư mục gốc của hộp thư. Điều này cho phép bạn thực hiện một hoạt động FindFolder để lấy id đó.

+4

Tôi không hiểu tại sao điều đó lại cần thiết. Quên về EWS, nếu tôi không có quyền truy cập đọc vào thư mục gốc của một nhân viên khác, nhưng họ tạo một thư mục chia sẻ và chia sẻ nó với tôi qua Outlook, tôi có thể thấy nó. Liệu họ có chia sẻ thư mục tự động cho tôi đọc quyền truy cập vào thư mục gốc của họ không? Nếu không, tại sao Outlook có thể xem lịch được chia sẻ chứ không phải EWS? –

7

Đây là cách tôi cố gắng làm điều đó:

Dim _cal As New Microsoft.Exchange.WebServices.Data.FolderId(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Calendar, New Microsoft.Exchange.WebServices.Data.Mailbox(_otherAddress)) 
Dim _calendarView As New Microsoft.Exchange.WebServices.Data.CalendarView(_startTime.Date, _endTime.Date.AddDays(1)) 

For Each appointmentItem As Microsoft.Exchange.WebServices.Data.Appointment In _ 
    service.FindAppointments(_ 
    _cal, _ 
    _calendarView) 
Next 

Lưu ý: đây chỉ hoạt động cho lịch mặc định vì đó là tất cả những gì cần thiết cho các yêu cầu của tôi

Edit: Đối với lịch không mặc định, có bạn nhìn vào phương pháp ExchangeService.FindFolders, tôi đã không thử nhưng điều này có thể không yêu cầu quyền truy cập hộp thư đến gốc.

+1

Cảm ơn Seph, nhưng như tôi đã nêu trong câu hỏi của mình, tôi cần quyền truy cập vào lịch không được chia sẻ mặc định. –

+1

Tôi đã chỉnh sửa câu trả lời của tôi nếu điều đó giúp, một tùy chọn khác là để người dùng của bạn tự động đăng ký lịch được chia sẻ của họ (do đó, ở phía người dùng, bạn cho máy chủ biết thư mục này dành cho người dùng này), điều này sẽ không yêu cầu bạn có quyền truy cập root vào hộp thư – Seph

+0

Tài khoản ExchangeService.Credentials cần có quyền/vai trò gì? – Brent

1

Tôi biết đó là một vài năm sau bài đăng gốc, nhưng chỉ để giúp những người có vấn đề tương tự, hãy xem this.

Nó sử dụng WellKnownFolderName của EWS API.PublicFoldersRoot để truy cập thư mục công cộng và duyệt đến thư mục con được yêu cầu bằng FolderId.

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