我正在尝试使用Office 365 API构建第一个应用程序并且遇到一个大问题。
我正在尝试使用Office 365 API和Azure Active Directory获取有关用户的主要信息,我正在这样做:
1)获取访问令牌。向https://login.windows.net/common/oauth2/token发送有关令牌的http帖子请求:
标头: 内容类型:application / x-www-form-urlencoded
POST DATA:
grant_type = authorization_code
client_id = *my_client_id*
client_secret = *my_client_secret*
session_state = e5fb6cd5-28f7-4dfc-b793-9ce8522534ac
code = *code_that_i_got_to_my_callback_url*
resource = https://outlook.office365.com/
我通过access_token,refresh_token,id_token,资源等获得响应。
2)我正在尝试获取有关访问令牌的用户的主要信息:
使用
获取https://outlook.office365.com/api/v1.0/me的请求头:
client-request-id: *some_random_id*
return-client-request-id: true,
authorization: 'Bearer ' + *access_token*
Accept: '*/*'
但我明白了:
{ error:
{ code: 'ErrorAccessDenied',
message: 'Access is denied. Check credentials and try again.' } }
我在AAD的应用拥有一切的最大权限(对不起俄语):
最有趣的时刻是,一周前一切运行良好(除了有时响应时间约为30秒),我可以获得有关用户的信息。
最后一件事。 在该页面(http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api-in-exchange-online-in-office-365.aspx)上,您可以使用参数prompt = admin_consent向https://login.windows.net/common/oauth2/token发送请求。它也在一周前工作,但现在如果你尝试你会得到错误的请求(400)。
答案 0 :(得分:5)
感谢您提出的问题,很遗憾听到您使用第一个应用时出现的问题。是否可以检查Office 365 Exchange Online的权限,并确保权限"拥有对用户邮箱的完全访问权限#34;没有被选中?有关详细信息,请参见附图。
这是为了使用名为Exchange Web Services的旧API访问用户的邮箱,而不是用于Office 365 REST API。我认为你正在接受“拒绝访问”#34;您的REST API请求,因为您可能已选择此权限。
如果您在删除此权限后仍然遇到问题,请告诉我们。如果您有任何疑问或需要更多信息,请与我们联系。
谢谢,
Venkat