curl - 通过 cURL 从 Microsoft Graph API 获取 Access_Token

标签 curl microsoft-graph-api

当我按照 [1] 和 [2] 在 Cygwin 中运行此命令时,我得到一个 Access_Token:

curl -X POST -d 'grant_type=client_credentials&client_id=[myClientId]&client_secret=[myAppSecret]&scope=openid profile User.ReadWrite User.ReadBasic.All Sites.ReadWrite.All Contacts.ReadWrite People.Read Notes.ReadWrite.All Tasks.ReadWrite Mail.ReadWrite Files.ReadWrite.All Calendars.ReadWrite' https://login.microsoftonline.com/[myTenantId]/oauth2/token

当我稍后尝试在这个简单的查询中使用该 access_token 时,出现错误:

Access token validation failure. Invalid audience

curl -X GET -H "Authorization: Bearer [accessTokenFromPreviousCommand]" https://graph.microsoft.com/v1.0/me

如果我运行 https://graph.microsoft.com/v1.0/me在 Microsoft Graph Explorer 中查询,它工作正常。我还可以使用互联网浏览器的“网络”选项卡来获取现有的 access_token,并在第二个 cURL 命令中使用该获取的 token 来获取预期结果;但是,我还没有弄清楚如何成功获取第一个 cURL 命令返回的 access_token 并在第二个 cURL 命令中使用它。

我确实在内部与一位开发人员同事讨论过这个问题,他提到我查看了 [2],但我仍然有点困惑。

有人可以告诉我在上面两个 cURL 命令中我做错了什么吗?

[1] - 达维德毛里
通过 cURL 调用 Azure REST API
Medium.com
2018年5月4日 [在线]
https://medium.com/@mauridb/calling-azure-rest-api-via-curl-eb10a06127
[访问日期:2019 年 12 月 3 日]

[2] - 伍兹, jackson ;格雷厄姆,劳拉;古兹曼,塞莱斯特;天使高尔夫球手;威克,瑞安;以及 future 可能的贡献者
Microsoft Graph 的身份验证和授权基础知识
Microsoft 文档 - Microsoft Graph
2019年9月19日 [在线]
https://learn.microsoft.com/en-us/graph/auth/auth-concepts
[访问日期:2019 年 12 月 3 日]

最佳答案

当您使用客户端凭据进行身份验证时,无法使用 /me。您需要通过 iduserPrincipalName 指定用户。

当 Graph 看到 /me 时,它会将该节点替换为“当前经过身份验证的用户的 ID”。由于在使用客户端凭据时没有经过身份验证的用户,因此 Graph 无法知道您正在寻找哪个用户。

关于curl - 通过 cURL 从 Microsoft Graph API 获取 Access_Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59163095/

相关文章:

azure - 我从 Logic App 调用 MS-Graph 并收到 "Unauthorized"错误

sharepoint - 搜索网站返回 403 访问被拒绝

c# - 使用 Microsoft Teams 发送聊天消息

javascript - 有没有办法异步调用外部API而不减慢整个网站的速度?

php - 错误 :14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure

php - 使用 PHP Curl 库的持久/保持事件 HTTP?

azure-active-directory - 如何从 Azure Graph API json 响应中过滤字符串数组?

amazon-web-services - Cloudfront HIT 后 Cloudfront MISS

curl: (3) 在 URL 中发现非法字符

api - 是否可以使用图形 API 创建项目文档集?