不使用SharePointOnline凭据的联机项目CSOM

不使用SharePointOnline凭据的联机项目CSOM,sharepoint,office365,sharepoint-online,csom,project-online,Sharepoint,Office365,Sharepoint Online,Csom,Project Online,我们每晚都有一个控制台应用程序运行,它用CSOM更新一些项目计划。这将使用SharePointOnlineCredentials进行身份验证 但IT部门希望将租户的LegacyAuthProtocolsEnabled标记更改为false。这导致SharePointOnlineCredentials在您可以读取时无法再使用 上面链接中建议的方法是使用ClientId和ClientSecret。我已经使用AuthenticationManager函数GetAppOnlyAuthenticatedCo

我们每晚都有一个控制台应用程序运行,它用CSOM更新一些项目计划。这将使用SharePointOnlineCredentials进行身份验证

但IT部门希望将租户的LegacyAuthProtocolsEnabled标记更改为false。这导致SharePointOnlineCredentials在您可以读取时无法再使用

上面链接中建议的方法是使用ClientId和ClientSecret。我已经使用AuthenticationManager函数GetAppOnlyAuthenticatedContext对此进行了测试。这适用于SharePoint Online的ClientContext对象,但在修改此函数以返回ProjectContext对象后不起作用。由于SharePoint主体没有Project Online许可证,因此引发ProjectServerError GeneralNotLicensed。请参阅

我的第三次尝试是使用找到的Office365ClaimsHelper类。这将通过提供用户名和密码来联系SAML令牌。现在这种方法适用于演示环境,但不适用于生产环境。我怀疑这是因为它具有多因素身份验证


简而言之:有没有人知道如何在不使用SharePointOnlineCredentials的情况下获取ProjectContext对象,也不显示在多因素身份验证环境中登录用户的弹出窗口

由于以下PowerShell脚本,成功找到了一个有效的解决方案:


将其翻译成C代码并调用Project Online CSOM工作

请提供步骤或代码。因为只有链接的答案是不鼓励的,因为它们可能会在将来被破坏