c# - 从客户端获取承载或 AuthResult?
问题描述
我正在实例化这样的图:
public static async Task<GraphServiceClient> GetGraphClient(string clientId, string clientSecret, string tenantName)
{
AuthenticationResult authResult = await
GetAuthenticationResult(tenantName, clientId, clientSecret);
var client = new GraphServiceClient(new DelegateAuthenticationProvider(
(requestMessage) =>
{
requestMessage.Headers
.Add("Authorization", "Bearer " + authResult.AccessToken);
return Task.FromResult(0);
}));
return client;
}
我有另一种扩展方法,我需要来自客户端的 Bearer:
public static async Task<T> GetRESTResult<T>(this GraphServiceClient client, string url)
{
HttpClient http = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
request.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", HERE????.AccessToken);
HttpResponseMessage response = await http.SendAsync(request);
var jsonStr = response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(jsonStr.Result);
}
如何从给定的客户端对象中获取 authresult/bearer?
解决方案
您应该通过 SDK 发送 HTTP 请求,而不是从SDK 中提取令牌:
public static async Task<T> GetRESTResult<T>(this GraphServiceClient client, string url)
{
// Create the request message and add the content.
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
// Authenticate (add access token) our HttpRequestMessage
await client.AuthenticationProvider.AuthenticateRequestAsync(request);
// Send the request and get the response.
HttpResponseMessage response = await client.HttpProvider.SendAsync(request);
// Process the response
var jsonStr = response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(jsonStr.Result);
}
推荐阅读
- lambda - 使用 Lambda 函数来使用供应商提供的所有对象
- java - 在这里了解多态性
- webpack - 如何在 webpack 中合理使用 process.env 变量
- saml - 在 Node 中为离线应用程序实施 SAML 身份提供程序?
- python - python Popen 不捕获程序的标准输出。不确定为什么
- ruby - “gem install therubyracer”失败并显示错误消息“libv8 需要安装 python 2 才能构建”
- python - 预处理以使用 python opencv 查找两个图像之间的差异
- docker - 几乎`docker pull`命令挂起-重试(5分钟后)-完成
- java - 将一列值转换为键,将另一列值转换为值
- solidity - 我收到了一个像“TypeError:”block.blockhash()“已被弃用,取而代之“blockhash()”之类的错误