尝试从Office 365获取日历时访问令牌验证失败

时间:2017-05-15 07:56:55

标签: php api outlook calendar office365

我目前正在开发一个拥有自己日历的网络服务,我正在尝试将此日历与客户端Exchange日历同步。 到目前为止,我一直在使用Outlook邮件地址(... @ outlook.com)进行测试,效果很好。

我使用OAuth进行身份验证过程,将客户端重定向到:https://login.microsoftonline.com/common/oauth2/authorize等...然后检索访问权限并刷新令牌,然后我尝试使用GET https://graph.microsoft.com/v1.0/me/calendars获取客户端的日历并发送标题中的访问令牌。

到目前为止,它与@ outlook.com邮件地址完美配合,但我尝试使用Office 365地址(... @ mybusiness.onmicrosoft.com)进行相同的处理,它给了我一个401错误:< / p>

错误“:{     “code”:“InvalidAuthenticationToken”,     “message”:“访问令牌验证失败。”,     “innerError”:{       “request-id”:“48dbe66d-0b82-490b-a84a-8944eaffc8ea”,       “约会”:“2017-05-15T07:51:59”     }

我使用Postman使用相同的网址执行相同的工作,但使用我收到的Postman的OAuth 2身份验证的令牌,并且它有效。我在webservice中使用的访问令牌是有效的,所以我不知道为什么它会在Postman中起作用。

知道为什么它现在不起作用?我的应用程序未在Azure Active Directory上注册,但在apps.dev.microsoft.com上注册,直到现在它都运行良好。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题解决了,我不得不调整数据库中访问令牌的大小。它曾经是一个VARCHAR(1500),足够用于@ outlook.com的令牌,但办公室365帐户的访问令牌更长,当我在数据库中注册它时它被切断了,我只发送了一块访问令牌。