Как получить доступ к моей среде SharePoint с помощью API Sharepoint и бизнес-аутентификации(B2B)

#c# #authentication #sharepoint #sharepoint-online #azure-ad-b2b

#c# #идентификация #sharepoint #sharepoint-онлайн #azure-ad-b2b

Вопрос:

Я пытаюсь подключиться к API SharePoint с помощью своего консольного приложения, чтобы автоматически загружать файлы из общего ресурса SharePoint. Среда SharePoint, к которой я пытаюсь получить доступ, использует проверку подлинности SharePoint B2B.

Когда я обычно вхожу в сеанс браузера, на мой адрес электронной почты отправляется код. Этот код дает мне доступ к среде SharePoint. Мне каким-то образом нужно программно пройти этот процесс, чтобы получить доступ из моего консольного приложения. Как подключиться к среде sharepoint из консольного приложения?

Я не смог найти примеров кода для аутентификации SharePoint B2B, но попытался получить доступ, используя приведенный ниже код. Однако строка Console.WriteLine(context.GetAccessToken()); возвращает следующую ошибку: System.ArgumentNullException: 'Value cannot be null. Parameter name: value'

Мой код:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Web; using System.IO; using Microsoft.SharePoint.Client; using OfficeDevPnP.Core; using AuthenticationManager = OfficeDevPnP.Core.AuthenticationManager;  namespace Sharepoint_Test {  internal class Program  {  static void Main(string[] args)  {   {  //Credentials  string url = "https://name.sharepoint.com/personal/mapname/_api/files";  string login = "classified";  string pass = "classified";  var accessToken = GetUserAuthToken(login, pass);    //Create webrequest, read response  var request = WebRequest.Create("https://name.sharepoint.com/personal/mapname/_api/files") as HttpWebRequest;  request.Credentials = new NetworkCredential(login, pass);  var response = request.GetResponse();     //Set up stream and read  Stream receiveStream = response.GetResponseStream();  StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);  var result = readStream.ReadToEnd();     //Get auth token  string GetUserAuthToken(string logIn, string passWord)  {  var authManager = new AuthenticationManager();  var context = authManager.GetAzureADCredentialsContext("https://name.sharepoint.com/personal/mapname/_api/files", logIn, passWord);  Console.WriteLine(context.GetAccessToken());  return context.GetAccessToken();  }  }  }  } }