Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Office 365 REST API-返回空值(仅限特定用户)_Php_Oauth_Office365api - Fatal编程技术网

Php Office 365 REST API-返回空值(仅限特定用户)

Php Office 365 REST API-返回空值(仅限特定用户),php,oauth,office365api,Php,Oauth,Office365api,我在为这件事发脾气,也许有人有主意。我们有一个在Azure上注册的web应用程序,它从Office 365 API中获取与登录用户帐户相关的日历和事件数据 当用户登录到我们的系统时,我们从Office365 API获取刷新令牌和access+ID令牌。我可以将访问令牌直接发送到服务器,我可以看到用户事件,一切正常。“基本”oauth代码是从示例代码中提取出来的。我们也可以在我们的应用程序中这样做,而且它也可以正常工作 这适用于某些用户,但不适用于其他用户。对于这些用户,系统对其令牌进行身份验证,

我在为这件事发脾气,也许有人有主意。我们有一个在Azure上注册的web应用程序,它从Office 365 API中获取与登录用户帐户相关的日历和事件数据

当用户登录到我们的系统时,我们从Office365 API获取刷新令牌和access+ID令牌。我可以将访问令牌直接发送到服务器,我可以看到用户事件,一切正常。“基本”oauth代码是从示例代码中提取出来的。我们也可以在我们的应用程序中这样做,而且它也可以正常工作

这适用于某些用户,但不适用于其他用户。对于这些用户,系统对其令牌进行身份验证,但在响应上的“value”键中响应空值

  • 工作用户和非工作用户之间的订阅类型相同(E1)
  • 处理调用的代码不会更改,“特定用户”不会经历任何附加过程。我们当地的制度对他们都一视同仁
  • 没有环境或变量差异。某些帐户将检索其事件,其他帐户将获得空响应。甚至在同一台计算机上
  • 每种情况下都有有效的日历事件或消息
我们得到的确切服务器响应是这样的,这发生在访问令牌经过身份验证之后:

(string(196) "{"@odata.context":"https : //outlook.office.com/api/v1.0/$metadata#Me/Events","value":[{"error":{"code":"ErrorInternalServerError","message":"Object reference not set to an instance of an object."}}")
(由于声誉原因,在https之后添加空格)

如果我以用户身份登录oauth沙盒(),系统将在任何情况下返回正确的结果。这让我相信Office365传递给我们的访问令牌是不正确的,但它似乎只在某些情况下失败,这些用户之间没有公共链接


我正试图找出任何可能发生这种情况的原因。如果有人有任何想法,我洗耳恭听。

没有太多细节,根据您的描述,我猜这是一个关于您如何注册应用程序以与Azure AD交互的问题。在某些情况下,来自与应用程序注册的Azure AD租约不同的用户(或注册为能够使用该应用程序)将通过初始OAuth阶段生成访问令牌,但当用于其他Azure AD API时,这些令牌不起作用。有关更多信息,请参阅(关于这意味着什么的文档很少。请注意,要在Azure管理控制台中启用多租户,您需要注册一个完全限定的域名(FQDN)


尽管如此,这可能根本不是您的问题-我建议您提供任何其他有关身份验证工作的帐户性质的详细信息,以及不工作的帐户性质的详细信息。

如果没有太多的详细信息,根据您的描述,我猜这是您注册方式的问题使应用程序与Azure AD交互。在某些情况下,与应用程序注册的Azure AD租约不同的用户(或注册为能够使用应用程序的用户)将通过初始OAuth阶段生成访问令牌,但当用于其他Azure AD API时,这些令牌不起作用(关于这意味着什么的文档很少。请注意,要在Azure管理控制台中启用多租户,您需要注册一个完全限定的域名(FQDN)


尽管如此,这可能根本不是您的问题-我建议您提供有关身份验证工作的帐户的性质以及不工作的帐户的性质的任何其他详细信息。

嗯,我还没有找到一个很好的答案来解释为什么会发生这种情况,但是我们将端点改为/events/改为/calendarview/?{params}一切都像魔法一样运作


知道了这一点,我很想知道为什么/events/只对某些用户有效,而对其他用户无效。也许这会对将来的用户有所帮助。

好吧,我还没有找到一个很好的答案来解释为什么会发生这种情况,但是我们将端点改为/events/改为/calendarview/?{params},一切似乎都很神奇

知道了这一点,我很想知道为什么/events/只适用于某些用户,而不适用于其他用户。也许这会对将来的用户有所帮助