В модуле 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 пустым. На моем сайте требуется: Чтобы пройти мимо этого, я ввел URL-адрес моего сайта (https://mydomain.sharepoint.com/sites/test). Идентификатор приложения был успешно создан:
Затем я отправился в _layouts/15/AppInv.aspx, чтобы обеспечить безопасность приложения. Я вставил в КАМЛ, чтобы дать АРРАМ, доступ для чтения в Интернет:
<AppPermissionRequests>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" />
</AppPermissionRequests>
И то доверенное приложение, нажав Trust It:
Я тогда скопировал значения из Регистрация приложения в мой 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 ошибки. Я попытался предоставить идентификатор приложения полный контроль над веб-сайтом, коллекцией сайтов и арендатором, но я все равно получаю ту же ошибку.
Как получить доступ к моему консольному приложению для доступа к обновлению на моем сайте?
Я получил это работает, используя код на http://www.vrdmn.com/2013/01/authenticating-net-client -object-model.html Но мне все еще интересно, как заставить его работать с помощью id приложения. – Russellg