我正在尝试编写我的第一个 Cron 作业,该作业应该从 Microsoft Graph Rest Api 请求一些信息。我已经使用 php 成功完成了此操作,但无法使其与 Bash curl 一起使用。我遵循了各种语法指南,并且非常确定我的请求设置正确,但是我无法从 Microsoft 获得正确的响应。
我的外壳脚本:
curl -i -X POST --data "{'grant_type':'client_credentials','client_secret':'****','client_id':'****','scope':'https://graph.microsoft.com/.default'}" --trace mylog.txt https://login.microsoftonline.com/****/oauth2/v2.0/token
我可以在日志文件中看到主体设置正确,但是我总是对这个错误感到遗憾
{"error":"invalid_request","error_description":"AADSTS900144: The request body must contain the following parameter: 'grant_type'. Trace ID: 3a5fb023-6dcb-465c-a39a-2e432cc62c00 Correlation ID: 33387641-8a36-4dac-aa46-c623ce170960 Timestamp: 2020-09-03 10:01:42Z","error_codes":[900144],"timestamp":"2020-09-03 10:01:42Z","trace_id":"3a5fb023-6dcb-465c-a39a-2e432cc62c00","correlation_id":"33387641-8a36-4dac-aa46-c623ce170960","error_uri":"https://login.microsoftonline.com/error?code=900144"}
我的日志文件 https://pastebin.com/vFQARkyD
也许有人知道为什么会发生这种情况。
答案1
您在 JSON 正文中使用单引号而不是双引号。
尝试:
curl -i -X POST --data '{"grant_type":"client_credentials","client_secret":"****","client_id":"****","scope":"https://graph.microsoft.com/.default"}' --trace mylog.txt https://login.microsoftonline.com/****/oauth2/v2.0/token