获取Microsoft Graph和各个服务API端点(Outlook REST API等)的访问令牌

时间:2016-11-23 11:18:07

标签: microsoft-graph outlook-restapi

我花了一些时间玩Azure AD OAuth 2.0。

与Microsoft Graph一起使用时,使用范围https://outlook.office.com/mail.read获取的访问令牌会引发401 Unauthorized

同样,使用范围https://graph.microsoft.com/mail.read获取的访问令牌在与Outlook REST API端点一起使用时会抛出401 Unauthorized

另外,如果我在授权用户时提及两个范围,我会收到错误。

是否可以拥有允许访问Microsoft Graph和Outlook REST API端点的访问令牌?

我正在构建一个电子邮件应用。最初,我将构建基本功能,如同步/发送电子邮件。

我将使用Microsoft Graph,因为它支持我目前需要的所有内容以及Microsoft recommends it个别服务API端点。

我担心未来。我目前将获得的OAuth访问令牌的范围为https://graph.microsoft.com/mail.read。将来,可能会发生Microsoft Graph不支持我要构建的新功能,但Outlook REST API端点支持它。在这种情况下,我想使用Outlook REST API端点。

我是否必须为每个用户维护两套OAuth访问令牌?同时要求每个用户重新认证也不是一个好主意。

1 个答案:

答案 0 :(得分:6)

是的,您可以使用RefreshToken在请求图形访问(范围)时获取具有与授权范围相同的范围的各个端点的AccessToken。

E.g。如果您请求Mail.Readhttps://graph.microsoft.com/mail.read的短名称),则可以使用带有scope="https://outlook.office.com/mail.read"的refresh_token返回令牌发布端点,并获取此端点的accesss_token。