我正在构建一个ASP.NET Core Web API,我想从OneDrive个人驱动器(属于Office 365 Home帐户的一部分)返回数据。我的Microsoft帐户与OneDrive和Azure订阅相关联,如您从我的Microsoft帐户的服务页面上看到的那样:
我正在尝试了解将API作为服务进行身份验证以使其能够浏览OneDrive所需执行的步骤。
我首先使用Microsoft Application Registration Portal注册了我的应用,然后将应用的客户端ID分配给下面的ocrmypdf
常量。然后,我添加了一个密码,并将值分配给了下面的ClientId
。最后,我将Azure订阅的目录ID设置为下面的ClientPassword
。
TenantId
运行此代码可以成功验证并填充我的private const string TenantId = "[tenant-id]";
private const string ClientId = "[client-id]";
private const string ClientPassword = "[client-password]";
private const string ResourceURL = "https://graph.microsoft.com";
var AzureADAuthority = $"https://login.microsoftonline.com/{TenantId}";
var authenticationContext = new AuthenticationContext(AzureADAuthority, false);
var credential = new ClientCredential(ClientId, ClientPassword);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceURL, credential);
var accessToken = authenticationResult.AccessToken;
var graphserviceClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
return Task.FromResult(0);
}));
var drives = await graphserviceClient.Drives.Request().GetAsync();
,但是最后一行将引发以下accessToken
:
代码:BadRequest \ r \ n消息:租户没有SPO 许可证。\ r \ n \ r \ n内部错误\ r \ n
我在这里做什么错了?