gpt4 book ai didi

asp.net - Sharepoint Online 禁止 WebRequest

转载 作者:行者123 更新时间:2023-12-02 12:09:47 24 4
gpt4 key购买 nike

我需要使用访问 token 创建对 SharePoint Online 中特定页面的 Web 请求,以便获取某些 header 信息,但我不断收到 403 错误,我不知道为什么。在尝试了更多访问请求之后,我使用 clientContext 只得到了 403,使用 Postman 得到了 401。

我可以从我的应用程序中的 grah api 以及使用访问 token 的 postman 获得响应,但问题是我需要执行 Web 请求来获取真实的网页 header ,例如 SpRequestDuration 和 SPIISLatency。

我已按照步骤创建 Azure AD 和应用程序。我请求用户登录以获取我的应用程序的身份验证代码

loginScopes = [
'User.Read.All',
'Directory.Read.All',
'Group.Read.All',
'Sites.Read.All',
'Reports.Read.All'
'offline_access',
'https://www.sharepoint.com/AllSites.FullControl'
];

const encodedScopes = encodeURIComponent(loginScopes.join(' '));
const encodedRedirectUri = encodeURIComponent(redirectUri);
let url = `https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?
response_type=code&
client_id=${clientId}
&redirect_uri=${encodedRedirectUri}
&scope=${encodedScopes}
&prompt=select_account`;

返回身份验证代码后,我创建具有权限的 ConfidentialClientApplication : ' https://login.microsoftonline.com/organizations '以及我的应用程序 clientId、secret、redirect 等。通过新创建的 ConfidentialClientApplication,我会以静默方式获取范围为“{tenantUrl}/AllSites.FullControl”的 token 以及具有其他范围的另一个 token 。

现在,使用访问 token ,我成功创建了 ClientContext,它从共享点站点检索数据,我可以轻松发出图形 API 请求,一切都会好起来的。但问题在于创建到特定站点的 WebRequest(例如。{tenantUrl}/SitePages/Forms/ByAuthor.aspx)

var manager = new AuthenticationManager();
var clientContext = manager.GetAzureADAccessTokenAuthenticatedContext(tenantUrl, accessToken);
clientContext.Load(clientContext.Site);
clientContext.Load(oWebsite.Lists);
clientContext.ExecuteQuery(); // Works fine

var request = clientContext.WebRequestExecutorFactory.CreateWebRequestExecutor(clientContext,{tenantUrl}/SitePages/Forms/ByAuthor.aspx).WebRequest;

request.Method = "GET";
//request.Headers.Add("Authorization", $"Bearer {accessToken}");

clientContext.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
{
e.WebRequestExecutor.WebRequest.Headers.Add("Authorization", "Bearer " + accessToken);
};
await request.GetResponseAsync(); // Throws 403

最佳答案

在线共享点

string siteUrl = ConfigurationManager.AppSettings["siteURL"];
SecureString passWord = new SecureString();
string pass = ConfigurationManager.AppSettings["userPassword"];
string user = ConfigurationManager.AppSettings["userName"];
foreach (char c in pass.ToCharArray()) passWord.AppendChar(c);
ClientContext clientContext = new ClientContext(siteUrl);
clientContext.Credentials = new SharePointOnlineCredentials(user, passWord);
return clientContext;

没有

clientContext.ExecutingWebRequest

关于asp.net - Sharepoint Online 禁止 WebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com