gpt4 book ai didi

azure - 如何获取 Microsoft Graph 读取 Excel 表格的 token ?

转载 作者:行者123 更新时间:2023-12-03 05:32:08 25 4
gpt4 key购买 nike

我需要什么:我需要使用 Microsoft Graph API 从 Microsoft Teams channel 读取 Excel 表格。
这可以通过以下 URI 实现:

https://graph.microsoft.com/v1.0/drives/someId/items/someId/workbook/tables/tableName/rows

问题是,这个端点需要一个有效的 token 。

2个机会:

  1. 创建可以访问整个 OneDrive 的 Azure AD 应用程序。

  2. 创建 Azure AD 应用程序以检索有权访问所需文件的服务用户的 token 。

第一个问题是,我不想让它访问整个 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: The request body must contain the following parameter: 'client_assertion' or 'client_secret'.

有什么想法吗?谢谢

最佳答案

对于这个问题,您需要了解ConfidentialClientApplicationPublicClientApplication之间的区别。

请参阅Public Client and Confidential Client applications .

Public client applications are applications which run on devices (phones for instance) or desktop machines. They are not trusted tosafely keep application secrets, and therefore access Web APIs in thename of the user only (they only support public client flows). Publicclients are unable to hold configuration time secrets, and as a resulthave no client secret.

因此,对于 PublicClientApplication,我们不需要客户端 key 。

您需要做的是(您可以从此 comment 找到):

Application菜单边栏选项卡中,选择Manifest,然后在 list 编辑器中将allowPublicClient属性设置为true.

有一个完整的示例,包含详细步骤 here供您引用。

此外,由于您正在尝试读取 Excel 表格,因此 user.read 权限是不够的。

基于List rows Permissions ,您需要在 Azure AD 应用程序(应用程序注册)中添加 Files.ReadWrite 委派权限。您还应该在代码中指定它。

关于azure - 如何获取 Microsoft Graph 读取 Excel 表格的 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64668123/

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