2013-06-10 1 views
1

Я пытаюсь получить правильный URL-адрес перенаправления для своих документов sharepoint, который затем я могу использовать для открытия документов в WebView iOS. В настоящее время я даю абсолютный URL для документа, где документ отображается внутри WebView в формате PDF (изображение/Readonly). В то время как я хочу перенаправить на офис webapp. Теперь моя проблема заключается в том, что я не знаю, является ли URL-адрес для офисного веб-приложения тем, что я могу построить, например appending /_layouts/15/WopiFrame.aspx?sourcedoc=, или это URL-адрес, основанный на установках, и нам нужно вызвать некоторый Sharepoint API, который сообщит нам, какой базовый URL-адрес для службы Wopi.Как создать/получить URL-адрес веб-приложения Office для документов sharepoint

В настоящее время я прохожу URL как - https: //.sharepoint.com/Shared%20Documents/demo/demo.docx В то время как я хочу передать URL как - https: //.sharepoint.com/_layouts/15 /WopiFrame.aspx?sourcedoc=/Shared%20Documents/demo/demo.docx

С нетерпением жду помощи. Спасибо заранее, Vishwesh

ответ

4
File f = clientContext.Web.GetFileByServerRelativeUrl("/sites/ /Shared%20Documents/Title.docx"); 
clientContext.Load(f); 
clientContext.ExecuteQuery(); 

ClientResult<String> result = f.ListItemAllFields.GetWOPIFrameUrl(SPWOPIFrameAction.Edit); 

clientContext.Load(f.ListItemAllFields); 
clientContext.ExecuteQuery(); 

result.Value содержит URL, что-то вроде этого: http://sharep.xxx:8080/sites/zxxx/_layouts/15/WopiFrame.aspx?sourcedoc=%2Fsites%2Fzxxx%2FShared%20Documents%2FTitle%2Edocx&action=edit

Также вы можете извлечь экстракт Office Web Apps URL из вышеприведенного страницы, если вы не» t хотите попасть в sharepoint вообще.

+0

Привет, вы знаете, как передать любые учетные данные со ссылкой, чтобы пользователь не смог снова войти в систему? – iamnobody

+0

Вам не нужно передавать никаких учетных данных. Вся цель аутентификации претензий заключается в том, чтобы запретить пользователям требовать повторной регистрации. – Nisarg

0
using Microsoft.SharePoint.Client; 
using Microsoft.SharePoint.Client.Utilities; 

// Assume we have these variables: 
// ctx: A valid client context 
// serverRelativeUrl: the URL of the document 

File f = ctx.Web.GetFileByServerRelativeUrl (serverRelativeUrl); 
result = f.ListItemAllFields.GetWOPIFrameUrl(SPWOPIFrameAction.Edit); 

ctx.Load(f.ListItemAllFields); 
ctx.ExecuteQuery(); 

Это основано на ответе от @thebitlic, который был серебряной пулей точно! Однако он или она делает два вызова на сервер. Благодаря чудесам дозирования CSOM, это возможно сделать в одном раунде, и нет необходимости возвращать объект File вообще.

Смежные вопросы