【问题标题】:Integrate SharePoint Office 365 into .net core project将 SharePoint Office 365 集成到 .net 核心项目中
【发布时间】:2023-02-03 09:35:09
【问题描述】:

我想分享一些我在使用 RESTful API 创建和移动文件夹时遇到的一些经验和麻烦。

【问题讨论】:

    标签: sharepoint-online


    【解决方案1】:

    **创建文件夹:**

    • 您将需要 sharePoint 令牌
            public async Task<JObject> getSharePointToken()
            {
                var sharPointTokenRequestUrl = "https://accounts.accesscontrol.windows.net/" + _configuration["MicrosoftGraph: TenantId"] + "/tokens/OAuth/2";
                var parameters = new Dictionary<string, string>();
                parameters["grant_type"] = "client_credentials";
                parameters["client_id"] = "your client id";
                parameters["client_secret"] = "your client secret";
                parameters["resource"] = "resource id";
                var par = new FormUrlEncodedContent(parameters);
                using (var httpClient = new HttpClient())
                {
                    using (var request = new HttpRequestMessage(new HttpMethod("POST"), sharPointTokenRequestUrl))
                    {
                        var response = await httpClient.PostAsync(sharPointTokenRequestUrl, par);
                        string responseBody = await response.Content.ReadAsStringAsync();
                        var result = JObject.Parse(responseBody);
                        return result;
                    }
                }
    
            }
    
    • 您还需要 XRequest Digest
            public async Task<JObject> getXRequestDigest()
            {
    
                var sharPointXRequestDigesttUrl = "https://your site /_api/contextinfo";
    
                var sharePointTokenString = getSharePointToken().Result.ToString();
                var sharePointToken = JsonConvert.DeserializeObject<SharePointTokenDto>(sharePointTokenString);
    
                var parameters = new Dictionary<string, string>();
                var par = new FormUrlEncodedContent(parameters);
                using (var httpClient = new HttpClient())
                {
    
                    httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + sharePointToken.access_token);
                    httpClient.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
                    using (var request = new HttpRequestMessage(new HttpMethod("POST"), sharPointXRequestDigesttUrl))
                    {
                        var response = await httpClient.PostAsync(sharPointXRequestDigesttUrl, par);
                        string responseBody = await response.Content.ReadAsStringAsync();
                        var result = JObject.Parse(responseBody);
                        return result;
                    }
                }
            }
    
    • 然后您可以在 SharePoint 中创建文件夹
            
    namespace Sharepoint.Dtos
    {
        public class SharePointTokenDto
        {
            public string token_type { get; set; }
            public string expires_in { get; set; }
            public string not_before { get; set; }
            public string expires_on { get; set; }
            public string resource { get; set; }
            public string access_token { get; set; }
        }
    }
    
    public async Task<Boolean> CrateFolderInSharePoint(string folderPath)
            {
    
                var sharePointTokenString = getSharePointToken().Result.ToString();
                var sharePointToken = JsonConvert.DeserializeObject<SharePointTokenDto>(sharePointTokenString);
                var xRequestDigest = await getXRequestDigest();
                var FormDigestValue = xRequestDigest["d"]["GetContextWebInformation"]["FormDigestValue"];
    
                var siteUrl = "https://yoursites-url/sites/SiteName/_api/web/folders";
                var folderUrl = "/sites/SiteName/Shared Documents" + folderPath;
    
                var body = new Dictionary<string, string>
                {
                    { "ServerRelativeUrl", folderUrl }
                };
    
                string bodyString = JsonConvert.SerializeObject(body);
                bodyString.Insert(0, " "__metadata": { "type": "SP.Folder" } ");
    
                var content = new StringContent(bodyString, Encoding.UTF8, "application/json");
                using (var httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + sharePointToken.access_token);
                    httpClient.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
                    httpClient.DefaultRequestHeaders.Add("X-RequestDigest", FormDigestValue.ToString());
    
                    using (var request = new HttpRequestMessage(new HttpMethod("POST"), siteUrl))
                    {
                        var response = await httpClient.PostAsync(siteUrl, content);
                        string responseBody = await response.Content.ReadAsStringAsync();
                        var result = JObject.Parse(responseBody);
    
    
                        if (response.IsSuccessStatusCode)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
    
                    }
    
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多