我正在尝试将Outlook日历集成到为小型企业(React前端,Django Rest Framework后端)构建的系统(Web应用程序)中,以便用户可以查看系统上的所有日历事件,以及在那里创建和更新它们,而不必在Outlook和系统之间来回切换。
我自己的编码本身没有任何问题,而只有访问令牌的检索,以便我可以访问用户的日历,一旦有了,实际的实现应该相对简单。
但是无论我做什么,我都会不断收到错误AADSTS7000222: The provided client secret keys are expired.
,这很奇怪,因为我创建的客户端密钥设置为永不过期。
我同时关注Get Access on Behalf of a User和Get Access Without a User的文档,但是在两种情况下我都收到了相同的错误消息。我不确定是否有什么区别,但是我认为“代表用户访问”文档是我应该采取的正确方法,因为需要访问每个用户的日历,以便可以显示事件并创建。我肯定知道我为client_id
和client_secret
提供了正确的值,因为它们与我在Azure上注册的应用程序中的值完全匹配。
首先,我尝试了以下操作(来自https://docs.microsoft.com/en-us/graph/auth-v2-service):
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials
使用Postman,更改client_id
和client_secret
的值以匹配我在应用程序中拥有的值。
我收到了错误消息AADSTS7000222: The provided client secret keys are expired.
,所以我决定尝试以下操作(来自https://docs.microsoft.com/en-us/graph/auth-v2-user):
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=offline_access%20user.read%20mail.read
&state=12345
在必要时更改所有值(租户为common
,并更改client_id
和redirect_uri
)
从中得到的响应为我提供了一个访问代码,该代码将在以下代码中使用:
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20mail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh
我再次在必要时更改了值,但仍然收到与以上AADSTS7000222: The provided client secret keys are expired.
相同的错误消息。