首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SharePoint从SharePoint联机外部获取c#列表数据

使用SharePoint从SharePoint联机外部获取c#列表数据
EN

Stack Overflow用户
提问于 2019-11-11 11:08:15
回答 3查看 1.9K关注 0票数 1

我有一个SharePoint在线列表,需要从SharePoint之外的列表中获取数据。我需要使用访问令牌方法,因为我已经在相同的租户中在azure AD中创建了一个应用程序,并试图获取列表,但它会产生未经授权的错误。

我尝试使用SharePoint REST并在标头中传递令牌。我引用了下面的URL:https://www.ktskumar.com/2017/01/access-sharepoint-online-using-postman/,但是它给我的错误是“{”error_description“:”无效的JWT令牌。令牌已过期。“}”在邮递员本身。我已经在应用程序注册和清单中添加了api权限,但仍然没有运气!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-12 14:44:31

我已经解决了这个问题,首先创建一个访问令牌,然后通过传递令牌发出一个http请求。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-11-12 02:21:20

我已经测试了你提供的链接中的步骤。对我来说很好。

此错误是由您在布局/15/appinv.aspx注册的应用程序的客户端机密过期引起的。

您可以注册一个新的应用程序或在SharePoint外接程序中替换过期的客户端秘密。

票数 0
EN

Stack Overflow用户

发布于 2019-11-12 02:46:22

您在azure和SharePoint外接程序中注册的应用程序是不同的,令牌也不同。

您可以使用外接程序身份验证来访问SharePoint。

这里的演示线程

如果您确实想使用azure应用程序访问SharePoint,您可以检查这条线

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58800178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档