Oauth 2.0 OAuth代表用户访问EWS

Oauth 2.0 OAuth代表用户访问EWS,oauth-2.0,microsoft-graph-api,exchangewebservices,Oauth 2.0,Microsoft Graph Api,Exchangewebservices,在使用管理员权限时,我成功地将OAuth 2.0与EWS结合使用。现在我正在尝试设置它,以便单个用户可以登录并为自己授予访问权限。因此,我使用以下URL启动浏览器: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=f3f92d23-29dd-4465-828e-35300884ef61&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%

在使用管理员权限时,我成功地将OAuth 2.0与EWS结合使用。现在我正在尝试设置它,以便单个用户可以登录并为自己授予访问权限。因此,我使用以下URL启动浏览器:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=f3f92d23-29dd-4465-828e-35300884ef61&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient&response_type=code&scope=offline_access%20Calendars.ReadWrite.All%20Contacts.ReadWrite.All%20Mail.ReadWrite.All%20Tasks.ReadWrite%20User.ReadBasic.All
浏览器允许我登录到测试帐户,但返回此错误:

错误=无效的客户端 description=AADSTS650053应用程序“我的应用程序名”要求范围“Calendars.ReadWrite.All”满足以下条件 资源“00000003-0000-0000-c000-000000000000”上不存在

在Azure中,当查看我的应用程序的API权限时,我有11个Exchange权限,包括Calendars.ReadWrite.All的应用程序权限和委派权限,以及我请求的所有其他权限


这是怎么回事?

因为EWS是一个遗留API,它没有实现Graph和Outlook REST API使用的更严格的权限模型。对委托访问有效的唯一权限是EWS.AccessAsUser.All(作用域)。这使您可以完全访问邮箱中的每个文件夹(以及用户已被授予访问权限的任何邮箱)。看起来您的应用程序注册已经包括该权限

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=f3f92d23-29dd-4465-828e-35300884ef61&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient&response_type=code&scope=offline_access%20https%3A%2F%2Foutlook.office.com%2FEWS.AccessAsUser.All

应该可以了

看来确实可以解决问题,谢谢,你像往常一样帮了大忙。