【问题标题】:Microsoft Graph SDK for PHP - 400 bad request - trying to get data适用于 PHP 的 Microsoft Graph SDK - 400 错误请求 - 尝试获取数据
【发布时间】:2020-02-07 10:19:30
【问题描述】:

我在驱动器中添加了一个 Excel 文件。我想从中获取数据,所以我首先根据 azure 门户上的应用程序的文档添加了权限 (Files.ReadWrite)。

首先,我从这个 url 获得一个访问令牌: https://login.microsoftonline.com/common/oauth2/v2.0/token

我收到一个令牌,然后我用它来完成来自 url 的 GET 请求: https://graph.microsoft.com/v1.0/me/drive/items/{drive-item-id}/workbook/worksheets/XX/range(address='A4:C4)

我当然根据文档将标头设置为令牌

'headers' => [
     'Accept' => 'application/json',
     'Authorization' => 'Bearer ' . $this->token
]

作为回应,我得到:

消息:客户端错误:GET https://graph.microsoft.com/v1.0/me... 导致 400 Bad Request 响应:{"error": {"code": "BadRequest", "message": "当前经过身份验证的上下文无效 对于这个请求。 (截断...)“

我应该如何授权/获取它的工作令牌?

最好的问候

【问题讨论】:

  • 这里没有太多细节。请说明您是如何获得令牌的。
  • @MarcLaFleur 我向“login.microsoftonline.com/common/oauth2/v2.0/token”做了一个请求,提供了client_id、scope、redirect_uri、client_secret和grant_type。从这里我得到我有 access_token 或我的令牌的对象,我仍然在下一个请求中使用它

标签: php microsoft-graph-api


【解决方案1】:

您不能将/me 与客户端凭据(即应用程序范围)一起使用,因为没有“我”。您需要指定/users/{userId | userPrincipalName}

【讨论】:

  • 谢谢。如何获取 userId 或 userPrincipalName?
  • 您可以从/users获取它
  • 我已经向应用程序添加了权限,我更改了我的登录端点而不是“common” 我有一个租约 ID,但现在得到了“Authorization_RequestDenied”。我错过了什么?有订阅吗?
  • 您不能将/common 与客户端凭据一起使用。您需要提供租户 ID,以便它知道您也在验证哪个租户(Common 依赖用户的电子邮件地址来确定这一点)。
  • 是的,我写过我使用提供租户 ID,但我现在有“Authorization_RequestDenied”。我现在应该怎么做?我设置了应用程序的权限。我应该订阅吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
相关资源
最近更新 更多