首页 > 解决方案 > 在 .NET5 中调出 Sharepoint 提示

问题描述

我们过去可以SharePoint Online使用SharePointOnlineCredentials该类登录,例如此处

此类在 .NET5 中不可用,并且我没有必要的 Azure 权限来在 Azure AD 中配置应用程序,如此处所述

我想要一个 C# 程序显示一个提示,以便用户可以手动登录 Sharepoint。一旦用户完成了这个,程序就会做它需要做的事情。是否有一些 C# 代码会显示 Sharepoint 在线登录提示?

我已经下载了 Pnp 和 CSOM。此代码包含以下错误。

当前上下文中不存在名称“GetSecureString”

方法“GetContext”没有重载需要 3 个参数

'Program.GetContext(Uri, string, SecureString)':并非所有代码路径都返回值当前上下文中不存在名称'context'

using System;
using System.Security;
using Microsoft.SharePoint.Client;
using System.Threading.Tasks;

using PnP.Framework;
namespace ConsoleApplication1
{
class Program
{
    public static async Task Main(string[] args)
    {
        Uri site = new Uri("https://contoso.sharepoint.com/sites/siteA");
        string user = "joe.doe@contoso.onmicrosoft.com";
        SecureString password = GetSecureString($"Password for {user}");

        // Note: The PnP Sites Core AuthenticationManager class also supports this
        using (var authenticationManager = new AuthenticationManager())
        using (var context = authenticationManager.GetContext(site, user, password))
        {
            context.Load(context.Web, p => p.Title);
            await context.ExecuteQueryAsync();
            Console.WriteLine($"Title: {context.Web.Title}");
        }
    }
    public ClientContext GetContext(Uri web, string userPrincipalName, 
SecureString userPassword)
    {
        context.ExecutingWebRequest += (sender, e) =>
        {
            // Get an access token using your preferred approach
            string accessToken = MyCodeToGetAnAccessToken(new Uri($" 
  {web.Scheme}://{web.DnsSafeHost}"), userPrincipalName, new 
   System.Net.NetworkCredential(string.Empty, userPassword).Password);
            // Insert the access token in the request
            e.WebRequestExecutor.RequestHeaders["Authorization"] = 
"Bearer " + accessToken;
        };
    }
}
}

标签: c#sharepointcsom

解决方案


推荐阅读