Как пройти аутентификацию в Sharepoint Online с учетными данными пользователя?

Я пытаюсь настроить некоторые списки для SharePoint Online, и, поскольку я новичок в этом вопросе, я не знаю, как подключиться к службе.

Когда я использую NAPA и из облака использую параметр «Редактировать в Visual Studio», мне автоматически предлагается ввести учетные данные при открытии проекта. Однако, когда я начинаю снизу вверх, т.е. открываю новый проект в Visual Studio, добавляю все необходимые dll, эта часть кода выдает ошибку (это проблема аутентификации):

ClientContext context = new ClientContext("https://MYURL.sharepoint.com/n/"); 
context.ExecuteQuery();

Я использую Microsoft.SharePoint.Client;

Сообщение об ошибке:

Произошло необработанное исключение типа «System.Net.WebException» в Microsoft.SharePoint.Client.dll. Дополнительные сведения: Удаленный сервер вернул ошибку: (403) Запрещено.

Я думаю, что мне не хватает части кода, которая отвечает за аутентификацию и которая в случае приложения NAPA жестко запрограммирована.

Как пройти аутентификацию в SharePoint Online? (достаточно, если мой код запустится только один раз, это не приложение, я не хочу его упаковывать и публиковать)

Я предполагаю, что это как-то связано с http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.sharepoint.remote.authentication.aspx, но это все, что у меня есть.


person grisha    schedule 31.03.2014    source источник


Ответы (1)


Как пройти аутентификацию в SharePoint Online с помощью управляемой CSOM

В CSOM для SharePoint 2013 представлен класс SharePointOnlineCredentials, который позволяет выполнять активную аутентификацию в SharePoint Online.

Пример

class Program
{
    static void Main(string[] args)
    {

        Console.WriteLine("Enter the URL of the SharePoint Online site:");

        string webUrl = Console.ReadLine();

        Console.WriteLine("Enter your user name (format: [email protected])");
        string userName = Console.ReadLine();

        Console.WriteLine("Enter your password.");
        SecureString password = GetPasswordFromConsoleInput();

        using (var context = new ClientContext(webUrl))
        {
            context.Credentials = new SharePointOnlineCredentials(userName,password);
            context.Load(context.Web, w => w.Title);
            context.ExecuteQuery();

            Console.WriteLine("Your site title is: " + context.Web.Title);
        }
    }

    private static SecureString GetPasswordFromConsoleInput()
    {
        ConsoleKeyInfo info;

        //Get the user's password as a SecureString
        SecureString securePassword = new SecureString();
        do
        {
            info = Console.ReadKey(true);
            if (info.Key != ConsoleKey.Enter)
            {
                securePassword.AppendChar(info.KeyChar);
            }
        }
        while (info.Key != ConsoleKey.Enter);
        return securePassword;
    }
}
person Vadim Gremyachev    schedule 31.03.2014
comment
Обратите внимание, что это больше не будет работать, поскольку SharePoint (наряду с большинством приложений/служб O365) требует современной проверки подлинности. Вам нужно будет создать приложение Azure AD и использовать идентификатор приложения и секрет для подключения, а не использовать учетные данные пользователя. - person TylerH; 27.05.2021