我需要什么:
我需要使用 Microsoft Graph API 从 Microsoft Teams 频道读取一个 excel 表。
使用以下 URI 可以做到这一点:
https://graph.microsoft.com/v1.0/drives/someId/items/someId/workbook/tables/tableName/rows
问题是,这个端点需要一个有效的令牌。
有2个机会:
创建可以访问整个 OneDrive 的 Azure AD 应用程序。
创建 Azure AD 应用程序以检索有权访问所需文件的服务用户的令牌。
第一个问题是,我不想让它访问整个 OneDrive。我希望它只能访问一个 OneDrive 文件夹。 也许有可能限制对 OneDrive 文件夹的访问?
我用 com.microsoft.aad.msal4j 库尝试了第二种选择:
String APP_ID = "20106bdc-eec0-493d-b32f-526583aa95a6";
String AUTHORITY = "https://login.microsoftonline.com/112121a0-cc1f-12af-1213-faaa12ef1b11/v2.0";
PublicClientApplication pca = PublicClientApplication.builder(
APP_ID).
authority(AUTHORITY).build();
String scopes = "User.Read";
UserNamePasswordParameters parameters = UserNamePasswordParameters.builder(
Collections.singleton(scopes),
userName,
password.toCharArray()).build();
IAuthenticationResult result = pca.acquireToken(parameters).get();
但这会导致以下异常:
com.microsoft.aad.msal4j.MsalServiceException:AADSTS7000218:请求正文必须包含以下参数:“client_assertion”或“client_secret”。
有任何想法吗?谢谢