如何解决无需注册为应用即可获取 SharePoint 在线用户访问令牌
我正在寻找通过 c# 在线获取带有用户 ID 和密码的用户令牌的方法。我可以使用 clientid 和 client secret 注册为应用程序,但我不是在寻找它。
PnP 有 powershell 推荐 Get-PnPAccessToken 并且只需要通过 C# 相同。
有没有办法通过 c# 在线获取 SharePoint?
非常感谢,
解决方法
访问 SharePoint Online 资源的简单方法是使用 .Net SDK(Microsoft.SharePoint.Client)。您可以参考代码示例 here。
ROPC(资源所有者密码凭据)流允许应用程序通过直接处理用户的密码来登录用户。但它需要对应用程序具有非常高的信任度,并且存在其他流程中不存在的风险。所以不推荐。
注意:确保您已为 SharePoint Online 添加所需的委派权限。
result = await context.AcquireTokenAsync(resource,clientId,new UserPasswordCredential(username,password));
有关详细信息,请参阅 here。
,使用 OfficeDevPnP.Core 库也可以获得访问令牌,使用 Nuget 控制台命令安装:
安装包 SharePointPnPCoreOnline -版本 3.28.2012
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OfficeDevPnP.Core;
using Microsoft.SharePoint.Client;
namespace UserAccessToken
{
class Program
{
static void Main(string[] args)
{
string siteUrl = "https://tenant.sharepoint.com";
string userName = "user@tenant.onmicrosoft.com";
string Password = "********";
var accessToken = GetUserAuthToken(siteUrl,userName,Password);
Console.Read();
}
private static string GetUserAuthToken(string siteUrl,string userPrincipal,string Pwd)
{
var authManager = new AuthenticationManager();
var context = authManager.GetAzureADCredentialsContext(siteUrl,userPrincipal,Pwd);
Console.WriteLine(context.GetAccessToken());
return context.GetAccessToken();
}
}
}
参考:
How to get access token in SharePoint Online using CSOM and use in Postman or Google Rest client
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。