通过cURL从Microsoft Graph API获取访问令牌

通过cURL从Microsoft Graph API获取访问令牌,curl,microsoft-graph-api,Curl,Microsoft Graph Api,当我按照[1]和[2]在Cygwin中运行此命令时,我会得到一个访问令牌: 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.R

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

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
当我稍后尝试在这个简单的查询中使用该访问令牌时,我得到一个错误:

访问令牌验证失败。无效观众

如果我在MicrosoftGraphExplorer中运行查询,它将正常工作。我还可以使用internet浏览器的“网络”选项卡获取现有的access_令牌,并在第二个cURL命令中使用该令牌获取预期结果;但是,我还没有弄清楚如何成功地获取从第一个cURL命令返回的access_令牌,并在第二个cURL命令中使用它

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

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

[1] -莫里,戴维德
通过cURL调用Azure REST API
Medium.com
2018年5月4日[在线]

[访问日期:2019年12月3日]

[2] -伍兹,杰克逊;格雷厄姆,劳拉;古兹曼,塞莱斯特;天使高尔夫球手;雷恩·威克;以及未来可能的贡献者
Microsoft Graph的身份验证和授权基础知识
Microsoft文档-Microsoft图形
2019年9月19日[在线]


[访问日期:2019年12月3日]

当您使用客户端凭据进行身份验证时,您不能使用
/me
。您需要通过
id
userPrincipalName
指定用户


当图形看到
/me
时,它将该节点替换为“当前已验证用户的id”。由于在使用客户端凭据时您并没有经过身份验证的用户,Graph无法知道您要查找的用户

看起来我跳过了第2步:如果有人在那之前没有回答,我希望明天能解释得更多。这是有道理的。我找到并切换到grant_type=authorization_代码,我想我是在添加了获取授权步骤后开始工作的。
curl -X GET -H "Authorization: Bearer [accessTokenFromPreviousCommand]" https://graph.microsoft.com/v1.0/me