Authenticate SharePoint - JackHu88/Comm GitHub Wiki
https://www.cnblogs.com/goldeneyezhang/p/7755730.html
https://www.nuget.org/packages/AppForSharePointOnlineWebToolkit
https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="ClientId" value="xxxx" />
<add key="ClientSecret" value="xxx" />
<add key="Realm" value="xxxxx" /> //Tenant ID
</appSettings>
</configuration>
using Microsoft.SharePoint.Client;
using Microsoft.Online.SharePoint.TenantAdministration;
var siteUri= new Uri("https://yourtenant.sharepoint.com");
try {
var accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, null).AccessToken;
using (var ctx = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(), accessToken))
{
Web web = ctx.Web;
User user = web.CurrentUser;
ctx.Load(web);
ctx.Load(user);
ctx.ExecuteQuery();
Console.WriteLine(web.Title);
Console.WriteLine(user.LoginName);
Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
https://www.nuget.org/packages/SharePointPnPCoreOnline
https://gist.github.com/vman/37bab1e1d700be238011f1de23a3e275
https://www.ktskumar.com/2016/05/authenticate-sharepoint-using-pnp-authentication-manager/
https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="ClientId" value="xxxx" />
<add key="ClientSecret" value="xxx" />
</appSettings>
</configuration>
using Microsoft.SharePoint.Client;
using OfficeDevPnP.Core;
AuthenticationManager authManager = new AuthenticationManager();
var ctx = authManager.GetAppOnlyAuthenticatedContext("https://yourtenant.sharepoint.com, ClientId, ClientSecret);
//var ctx = authManager.GetSharePointOnlineAuthenticatedContextTenant(siteUrl, account, password);
Web web = ctx.Web;
User user = web.CurrentUser;
ctx.Load(web);
ctx.Load(user);
ctx.ExecuteQuery();
Console.WriteLine(web.Title);
Console.WriteLine(user.LoginName);
Console.ReadLine();
https://www.ktskumar.com/2017/01/access-sharepoint-online-using-postman
<configuration>
<appSettings>
<add key="ClientID" value="xxx" />
<add key="ClientSecret" value="xxx" />
<add key="SiteDomain" value="xxx" />
<add key="TenantID" value="xxx" />
<add key="resource" value="00000003-0000-0ff1-ce00-000000000000" />
</appSettings>
</configuration>
//On-Premise
HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create("http://sp2013/_api/web/lists/getByTitle('Tasks')/items");
endpointRequest.Method = "GET";
endpointRequest.Accept = "application/json;odata=verbose";
NetworkCredential cred = new NetworkCredential(account), securepassWord);
endpointRequest.Credentials = cred;
HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse();
try
{
WebResponse webResponse = endpointRequest.GetResponse();
Stream webStream = webResponse.GetResponseStream();
StreamReader responseReader = new StreamReader(webStream);
string response = responseReader.ReadToEnd();
JObject jobj = JObject.Parse(response);
JArray jarr = (JArray)jobj["d"]["results"];
foreach (JObject j in jarr)
{
Console.WriteLine(j["Title"]);
}
responseReader.Close();
//Console.ReadLine();
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.Message); Console.ReadLine();
}
//SharePoint Online
var request = (HttpWebRequest)HttpWebRequest.Create(@"https://accounts.accesscontrol.windows.net/" + TenantID + "/tokens/OAuth/2");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.AllowAutoRedirect = false;
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string requestBody = HttpUtility.UrlEncode("grant_type", myEncoding) + "=" + HttpUtility.UrlEncode("client_credentials", myEncoding)
+ "&" + HttpUtility.UrlEncode("client_id", myEncoding) + "=" + HttpUtility.UrlEncode(ClientID + "@" + TenantID, myEncoding)
+ "&" + HttpUtility.UrlEncode("client_secret", myEncoding) + "=" + HttpUtility.UrlEncode(ClientSecret, myEncoding)
+ "&" + HttpUtility.UrlEncode("resource", myEncoding) + "=" + HttpUtility.UrlEncode(resource + "/" + SiteDomain + "@" + TenantID, myEncoding);
byte[] contentBytes = Encoding.UTF8.GetBytes(requestBody);
request.ContentLength = contentBytes.Length;
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(contentBytes, 0, contentBytes.Length);
requestStream.Close();
HttpWebResponse hwRes = request.GetResponse() as HttpWebResponse;
if (hwRes.StatusCode == System.Net.HttpStatusCode.OK)
{
Stream rStream = hwRes.GetResponseStream();
StreamReader sr = new StreamReader(rStream, Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
rStream.Close();
var obj = JObject.Parse(result);
string access_token = obj.GetValue("access_token").ToString();
var request2 = (HttpWebRequest)HttpWebRequest.Create(@"https://tennat.sharepoint.com/_api/web/lists/getByTitle('Test')/items");
request2.Method = "Get";
request2.PreAuthenticate = true;
request2.ContentType = "application/json";
request2.AllowAutoRedirect = false;
request2.Accept = "application/json";
request2.Headers.Add("Authorization", "Bearer " + access_token);
try
{
WebResponse webResponse = request2.GetResponse();
Stream webStream = webResponse.GetResponseStream();
StreamReader responseReader = new StreamReader(webStream);
string response = responseReader.ReadToEnd();
JObject jobj = JObject.Parse(response);
JArray jarr = (JArray)jobj["value"];
foreach (JObject j in jarr)
{
Console.WriteLine(j["Title"]);
}
responseReader.Close();
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.Message); Console.ReadLine();
}
}
}
//
https://blog.csdn.net/cslp517/article/details/66973474
https://stackoverflow.com/questions/54252915/c-sharp-code-to-update-sharepoint-list-item-using-rest-api-call
Uri uri = new Uri ("https://tenantname.sharepoint.com/sites/dev/");
using (var client = new SPHttpClient(uri, "[email protected]", "yourpassword"))
{
var listTitle = "MyList8";
var itemId = 4;
var itemPayload = new { __metadata = new { type = "SP.Data.MyList8ListItem" }, Title = "updateviaRest" };
var endpointUrl = string.Format("{0}/_api/web/lists/getbytitle('{1}')/items({2})", uri, listTitle, itemId);
var headers = new Dictionary<string, string>();
headers["IF-MATCH"] = "*";
headers["X-HTTP-Method"] = "MERGE";
client.ExecuteJson(endpointUrl, HttpMethod.Post, headers, itemPayload);
Console.WriteLine("Task item has been updated");
}
From <https://stackoverflow.com/questions/54252915/c-sharp-code-to-update-sharepoint-list-item-using-rest-api-call>