2015-02-24 3 views
1

В модуле 2 курса MVA Построение блоков и служб платформы SharePoint под названием «Глубокое погружение в списки SharePoint для хранения данных» (примерно 45 минут) Тед Паттисон сделал демонстрацию использования консольного приложения для создания списка на сайт SharePoint Online. Курс рассчитан на http://www.microsoftvirtualacademy.com/training-courses/deep-dive-building-blocks-and-services-of-sharepointКак получить доступ к моему консольному приложению для доступа к моему сайту Sharepoint Online?

Я пытаюсь сделать то же самое в своей среде, но у меня проблемы.

В демоверсии он отправился в _layouts/15/AppRegNew.aspx, чтобы зарегистрировать новое приложение в реестре приложений. В демоверсии в верхней части страницы был список радиокнопки «Тип приложения» с параметрами «Приложение, запущенное на веб-сервере» и «Приложение, запущенное на клиентской машине». Когда я обращаюсь к этой странице на своем сайте, такого списка кнопок радио нет. Также в демонстрации Тед оставил URL Redirect пустым. На моем сайте требуется: enter image description here Чтобы пройти мимо этого, я ввел URL-адрес моего сайта (https://mydomain.sharepoint.com/sites/test). Идентификатор приложения был успешно создан: enter image description here

Затем я отправился в _layouts/15/AppInv.aspx, чтобы обеспечить безопасность приложения. Я вставил в КАМЛ, чтобы дать АРРАМ, доступ для чтения в Интернет:

<AppPermissionRequests> 
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" /> 
    </AppPermissionRequests> 

enter image description here И то доверенное приложение, нажав Trust It:

enter image description here

Я тогда скопировал значения из Регистрация приложения в мой app.config:

<add key="targetSiteUrl" value="https://xxxxx.sharepoint.com/sites/test"/> 
    <add key="clientId" value="bf4c37ef-9202-41ba-8430-3983cba26285"/> 
    <add key="clientSecret" value="nKGefHSvT69Ls2rwq1AIVyyHkIwlBzT9UkpbJMUcIbw="/> 
    <add key="deleteOnly" value="false"/> 

А затем создал код на основе того, что было в демоверсии, чтобы получить t он перемычки названия:

static void Main(string[] args) 
     { 
      string siteUrl = ConfigurationManager.AppSettings["targetSiteUrl"]; 
      bool deleteOnly = ConfigurationManager.AppSettings["deleteOnly"].Equals("true"); 


       Uri siteUri = new Uri(siteUrl); 
      string realm = TokenHelper.GetRealmFromTargetUrl(siteUri); 
      var accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, 
       siteUri.Authority, realm).AccessToken; 
      using (var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUrl, accessToken)) { 

       var web = clientContext.Web; 
       clientContext.Load(web); 
       clientContext.ExecuteQuery(); 

       Console.WriteLine(web.Title); 

      } 



     } 

Код выше получает царство и маркер доступа и успешно создает clientContext, Но когда я бег ExecuteQuery я всегда получаю Microsoft.SharePoint.Client.ServerUnauthorizedAccessException ошибки. Я попытался предоставить идентификатор приложения полный контроль над веб-сайтом, коллекцией сайтов и арендатором, но я все равно получаю ту же ошибку.

Как получить доступ к моему консольному приложению для доступа к обновлению на моем сайте?

+0

Я получил это работает, используя код на http://www.vrdmn.com/2013/01/authenticating-net-client -object-model.html Но мне все еще интересно, как заставить его работать с помощью id приложения. – Russellg

ответ

1

мне нужно установить AllowAppOnlyPolicy при добавлении разрешения в appinv.aspx

<AppPermissionRequests AllowAppOnlyPolicy="true" > 
Смежные вопросы