首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不使用SharePointOnlineCredentials的Project Online CSOM

在使用Project Online的客户端对象模型(CSOM)时,如果你不想使用SharePointOnlineCredentials进行身份验证,可以选择其他身份验证方法,例如OAuth或Azure AD应用程序身份验证。以下是如何使用OAuth进行身份验证的示例。

前提条件

  1. 注册Azure AD应用程序:你需要在Azure AD中注册一个应用程序,并为其分配适当的权限。
  2. 获取客户端ID和客户端密钥:从Azure AD应用程序注册中获取客户端ID和客户端密钥。
  3. 获取租户ID:从Azure AD中获取租户ID。

步骤

1. 注册Azure AD应用程序

  • 登录到Azure门户。
  • 导航到“Azure Active Directory” > “应用注册” > “新注册”。
  • 输入应用程序名称,选择支持的帐户类型,并输入重定向URI(例如,https://localhost)。
  • 注册应用程序后,记下应用程序(客户端)ID和目录(租户)ID。
  • 导航到“证书和密码” > “新客户端密码”,生成一个新的客户端密码,并记下它。

2. 分配API权限

  • 导航到“API权限” > “添加权限” > “Microsoft Graph”或“SharePoint”。
  • 添加所需的API权限,例如“Sites.Read.All”、“Sites.ReadWrite.All”等。
  • 确保管理员同意这些权限。

3. 使用OAuth进行身份验证

以下是一个使用OAuth进行身份验证并访问Project Online的示例代码:

代码语言:javascript
复制
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}");
            }
        }
    }
}

解释

  1. Azure AD应用程序注册:在Azure AD中注册应用程序并获取客户端ID、客户端密钥和租户ID。
  2. 分配API权限:为应用程序分配所需的API权限。
  3. OAuth身份验证:使用Microsoft.Identity.Client库进行OAuth身份验证,获取访问令牌。
  4. 访问Project Online:使用获取的访问令牌访问Project Online数据。

依赖项

  • Microsoft.Identity.Client:用于OAuth身份验证。
  • Microsoft.ProjectServer.Client:用于Project Online CSOM。
  • Microsoft.SharePoint.Client:用于SharePoint CSOM。

你可以通过NuGet包管理器安装这些依赖项:

代码语言:javascript
复制
Install-Package Microsoft.Identity.Client
Install-Package Microsoft.ProjectServer.Client
Install-Package Microsoft.SharePoint.Client

通过这种方式,你可以在不使用SharePointOnlineCredentials的情况下,使用OAuth进行身份验证并访问Project Online。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券