上下文:我正在构建一个 Web 应用程序,旨在提供有关用户 Sharepoint 和 OneDrive 数据的见解和分析。用户应该能够访问我的网络应用程序,通过一些 oauth 流程并同意“读取”我们想要的工作区数据范围来连接他们的 Sharepoint 和 OneDrive 数据,然后我们应该能够生成访问和刷新令牌代表他们根据他们同意的范围在我们的应用程序中使用。例如,我们希望能够在给定一些输入查询的情况下搜索用户的共享点数据。
问题:我在尝试生成访问令牌时继续遇到此错误:
400 Bad Request: "{"error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID 'fa30181d-73e3-4ac8-bc74-cdb9323c19f6' named 'appTesting'. Send an interactive authorization request for this user and resource. Trace ID: 24846f12-6d9e-4a04-b3bf-abb970710e00 Correlation ID: c0886b13-403b-4843-8fbe-34525d564452 Timestamp: 2024-04-30 02:15:00Z","error_codes":[65001],"timestamp":"2024-04-30 02:15:00Z","trace_id":"24846f12-6d9e-4a04-b3bf-abb970710e00","correlation_id":"c0886b13-403b-4843-8fbe-34525d564452","suberror":"consent_required"}"
在我看来,我正在严格遵循该指南,但我的 Azure UI 配置中存在一些我不知道且未包含在指南中的问题。任何解决此问题的建议将不胜感激!
TLDR 和主要问题,尝试生成访问令牌时导致此错误的原因是什么?
400 Bad Request: "{"error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID 'fa30181d-73e3-4ac8-bc74-cdb9323c19f6' named 'appTesting'. Send an interactive authorization request for this user and resource. Trace ID: 24846f12-6d9e-4a04-b3bf-abb970710e00 Correlation ID: c0886b13-403b-4843-8fbe-34525d564452 Timestamp: 2024-04-30 02:15:00Z","error_codes":[65001],"timestamp":"2024-04-30 02:15:00Z","trace_id":"24846f12-6d9e-4a04-b3bf-abb970710e00","correlation_id":"c0886b13-403b-4843-8fbe-34525d564452","suberror":"consent_required"}"
如问题详细描述。
错误“AADSTS65001: 用户或管理员尚未同意使用 ID 为 'xxx' 且名为 'xxx' 的应用程序。为此用户和资源发送交互式授权请求” 通常在应用程序未经过筛选时出现所需的 API 权限并且管理员同意这些权限。
因此,如果您想访问用户的 SharePoint 和 OneDrive,请检查以下内容:创建了 Microsoft Entra ID 并授予
Files.Read.All
要授权用户,请使用以下端点:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=offline_access User.Read Files.Read.All
&state=12345
使用以下参数生成
访问令牌:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id:ClientID
grant_type:authorization_code
code:code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
scope:offline_access User.Read Files.Read.All
对于
示例,通过使用上述访问令牌,我能够访问 OneDrive 和 SharePoint 网站:
https://graph.microsoft.com/v1.0/sites/SiteID/drives/DriveID
https://graph.microsoft.com/v1.0/drives/DriveID/root
如果问题仍然存在,检查以下内容:
Files.Read
API 权限仅允许应用程序访问登录的用户信息,因此请尝试授予
Files.Read.All
委托的 API 权限。
Sites.Read.All
委托 API 权限。