Получите данные списка SharePoint из-за пределов SharePoint Online, используя c # - PullRequest
1 голос
/ 11 ноября 2019

У меня есть онлайн-список SharePoint, и мне нужно получить данные из этого списка из-за пределов SharePoint. Мне нужно использовать подход токена доступа, для этого я создал приложение в Azure AD в том же клиенте и пытаюсь получить список, но при этом выдается неавторизованная ошибка.

Я попытался использовать API REST SharePoint и передать токен взаголовки. Я ссылался на следующий URL: https://www.ktskumar.com/2017/01/access-sharepoint-online-using-postman/ Но он дает мне ошибку как "{" error_description ":" Недопустимый токен JWT. Срок действия токена истек. "}" В самом Почтальоне. Я добавил разрешения API в регистрации приложений и пока еще не получил удачи!

Ответы [ 3 ]

0 голосов
/ 12 ноября 2019

Приложение, которое вы зарегистрировали в Azure и надстройке SharePoint, отличается, и токены также различаются.

Вы можете использовать аутентификацию надстройки для доступа к SharePoint.

Демонстрационная тема здесь

Если вы хотите использовать приложение Azure для доступа к SharePoint, вы можете проверить эту тему .

0 голосов
/ 12 ноября 2019

Я решил проблему: сначала создайте токен доступа, а затем сделайте http-запрос, передав токен.

using (var context = new ClientContext("SiteURL"))
                {                   
                    context.ExecutingWebRequest += Context_ExecutingWebRequest;
}

public void Context_ExecutingWebRequest(object sender, WebRequestEventArgs e)
        {
            e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + GetAccessToken();
        }
 public string GetAccessToken()
        {
            try
            {
                #region Get Access token for Azure AD access              
                var client = new RestClient("https://accounts.accesscontrol.windows.net/" + TenantID + "/tokens/OAuth/2");
                var request = new RestRequest(Method.POST);                
                request.AddParameter("grant_type", "client_credentials");
                request.AddParameter("client_id", "ClientID@TenantID");
                request.AddParameter("client_secret", "ClientSecret");
                request.AddParameter("resource", "00000003-0000-0ff1-ce00-000000000000/SharePointSite@TenantID");
                IRestResponse restClientResponse = client.Execute(request);
                var DeserializeObject = JsonConvert.DeserializeObject<BearerToken>(restClientResponse.Content.ToString());
                string accessToken = DeserializeObject.AccessToken;
                #endregion           

                return accessToken;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

0 голосов
/ 12 ноября 2019

Я проверил шаги по предоставленной вами ссылке. Это прекрасно работает для меня.

Эта ошибка вызвана истечением срока действия секрета клиента приложения, которое вы зарегистрировали по адресу https: //.sharepoint.com/_layouts/15/appinv.aspx.

Вы можете зарегистрировать новое приложение или заменить истекающий секрет клиента в надстройке SharePoint .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...