Outlook REST API:尝试使用 AZURE AD 身份验证调用 API
Outlook REST API: trying to call API using AZURE AD authentication
使用 office 365 Outlook REST API(版本 2),我有一个 Web 应用程序管理特定邮箱的 outlook 订阅。我已经能够使用示例获取令牌并使用授权代码流成功调用 API。
但是现在,我想使用客户端凭据流并通过委托权限使用 Azure AD 身份验证获取令牌(我在 office 365 exchange online 下为应用程序提供了所有可能的委托权限)。类似于我在这里看到的:Get Office 365 API access token without user interaction
我已经注册了我的应用程序并获得了我的租户 ID、客户 ID 和密码。我已经能够获得令牌,但当我尝试使用它时,我收到 401,未经授权返回。
这是我获取令牌的方式:
AuthenticationContext authContext = new AuthenticationContext($"{authority}{tenantId}");
clientCredential = new ClientCredential(client_Id, secret);
authResult = await authContext.AcquireTokenAsync(resource, clientCredential);
authResult.AccessToken;
下面是我尝试使用 API 的方式(尝试在此代码中使用 REST sharp 删除订阅):
var token = await GetOtherToken(account);
rc = new RestClient("https://outlook.office.com/api/v2.0");
rc.AddDefaultHeader("Authorization", $"Bearer {token}");
request = new RestRequest($"me/subscriptions('{restSubId}')", Method.DELETE);
request.AddHeader("Content-Length", "0");
request.AddHeader("Content-Type", "multipart/form-data");
看来这不可能。拜托,有人,放弃一些知识。谢谢阅读。
使用客户端凭据流获取资源令牌时,您使用的是应用程序身份,而不是用户身份。所以你应该为你的应用程序分配应用程序权限(而不是委托权限)。此外,由于您使用的是应用程序标识而不是用户标识,因此 api 无法识别 me
(https://outlook.office.com/api/v2.0/me) . Please click here 如何在 Office 365 中构建服务和守护程序应用程序。
使用 office 365 Outlook REST API(版本 2),我有一个 Web 应用程序管理特定邮箱的 outlook 订阅。我已经能够使用示例获取令牌并使用授权代码流成功调用 API。
但是现在,我想使用客户端凭据流并通过委托权限使用 Azure AD 身份验证获取令牌(我在 office 365 exchange online 下为应用程序提供了所有可能的委托权限)。类似于我在这里看到的:Get Office 365 API access token without user interaction
我已经注册了我的应用程序并获得了我的租户 ID、客户 ID 和密码。我已经能够获得令牌,但当我尝试使用它时,我收到 401,未经授权返回。
这是我获取令牌的方式:
AuthenticationContext authContext = new AuthenticationContext($"{authority}{tenantId}");
clientCredential = new ClientCredential(client_Id, secret);
authResult = await authContext.AcquireTokenAsync(resource, clientCredential);
authResult.AccessToken;
下面是我尝试使用 API 的方式(尝试在此代码中使用 REST sharp 删除订阅):
var token = await GetOtherToken(account);
rc = new RestClient("https://outlook.office.com/api/v2.0");
rc.AddDefaultHeader("Authorization", $"Bearer {token}");
request = new RestRequest($"me/subscriptions('{restSubId}')", Method.DELETE);
request.AddHeader("Content-Length", "0");
request.AddHeader("Content-Type", "multipart/form-data");
看来这不可能。拜托,有人,放弃一些知识。谢谢阅读。
使用客户端凭据流获取资源令牌时,您使用的是应用程序身份,而不是用户身份。所以你应该为你的应用程序分配应用程序权限(而不是委托权限)。此外,由于您使用的是应用程序标识而不是用户标识,因此 api 无法识别 me
(https://outlook.office.com/api/v2.0/me) . Please click here 如何在 Office 365 中构建服务和守护程序应用程序。