在使用Project Online的客户端对象模型(CSOM)时,如果你不想使用SharePointOnlineCredentials
进行身份验证,可以选择其他身份验证方法,例如OAuth或Azure AD应用程序身份验证。以下是如何使用OAuth进行身份验证的示例。
https://localhost
)。以下是一个使用OAuth进行身份验证并访问Project Online的示例代码:
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Microsoft.Identity.Client;
using Microsoft.ProjectServer.Client;
using Microsoft.SharePoint.Client;
class Program
{
private static string clientId = "YOUR_CLIENT_ID";
private static string clientSecret = "YOUR_CLIENT_SECRET";
private static string tenantId = "YOUR_TENANT_ID";
private static string projectOnlineUrl = "https://YOUR_TENANT.sharepoint.com/sites/YOUR_PROJECT_SITE";
static async Task Main(string[] args)
{
string authority = $"https://login.microsoftonline.com/{tenantId}";
string[] scopes = { $"{projectOnlineUrl}/.default" };
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.Build();
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
using (var context = new ProjectContext(projectOnlineUrl))
{
context.ExecutingWebRequest += (sender, e) =>
{
e.WebRequestExecutor.WebRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
};
context.Load(context.Projects);
context.ExecuteQuery();
foreach (PublishedProject project in context.Projects)
{
Console.WriteLine($"Project Name: {project.Name}");
}
}
}
}
你可以通过NuGet包管理器安装这些依赖项:
Install-Package Microsoft.Identity.Client
Install-Package Microsoft.ProjectServer.Client
Install-Package Microsoft.SharePoint.Client
通过这种方式,你可以在不使用SharePointOnlineCredentials
的情况下,使用OAuth进行身份验证并访问Project Online。
领取专属 10元无门槛券
手把手带您无忧上云