#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(); } } } } }