javascript – 尝试创建日历事件时拒绝权限(403)

前端之家收集整理的这篇文章主要介绍了javascript – 尝试创建日历事件时拒绝权限(403)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试通过JavaScript与adal.js和jQuery(OAuth隐式流程)集成到Office365 API,但我在尝试为我的用户创建日历事件时遇到问题.我的现有代码在检索电子邮件和日历事件时工作正常,但是当我尝试创建日历事件时,我始终得到“403禁止”响应.

代码是实时的并且在http://oauth.idippedut.dk/oauth.html工作.我在https://outlook.office.com/api/v2.0/me/events访问Office 365 API端点.

我在Office365 / Azure租户Active Directory中的应用程序上的“委派权限”配置如下:

enter image description here

我们的Office365 / Azure租户Active Directory中的应用程序上的“应用程序权限”配置如下:

enter image description here

jQuery请求是这样的:

  1. var event = {
  2. "Subject": "Discuss the Calendar REST API","Body": {
  3. "ContentType": "HTML","Content": "I think it will meet our requirements!"
  4. },"Start": {
  5. "DateTime": "2016-01-21T18:00:00","TimeZone": "Pacific Standard Time"
  6. },"End": {
  7. "DateTime": "2016-01-21T19:00:00","Attendees": [
  8. {
  9. "EmailAddress": {
  10. "Address": "jesper@lundstocholm.dk","Name": "Janet Schorr"
  11. },"Type": "required"
  12. }
  13. ]
  14. };
  15. // Create calendar events
  16. jQuery.ajax({
  17. type: 'POST',url: postCalenderEndpoint,data: JSON.stringify(event),contentType: "application/json",headers: {
  18. 'Accept': 'application/json','Authorization': 'Bearer ' + token,},}).done(function (data) {
  19. //alert(JSON.stringify(data));
  20. }).fail(function (err) {
  21. jQuery("#loginMessage").text('Error calling REST endpoint: ' + err.statusText + '\n' + err.responseText);
  22. });

jQuery的配置是这样的:

  1. var resource = 'https://outlook.office.com';
  2. var postCalenderEndpoint = 'https://outlook.office.com/api/v2.0/me/events';
  3. var clientID = '28a707a5-0f11-4d93-8b88-6a918544da14';
  4. var tenantName = '365projectum.onmicrosoft.com';
  5. var authContext = new AuthenticationContext({
  6. instance: 'https://login.microsoftonline.com/',tenant: tenantName,clientId: clientID,postlogoutRedirectUri: window.location.origin,cacheLocation: 'localStorage'
  7. });

结果HTTP请求是这样的:

  1. Host: outlook.office.com
  2. User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
  3. Accept: application/json
  4. Accept-Language: en-US,en;q=0.5
  5. Accept-Encoding: gzip,deflate
  6. Content-Type: application/json; charset=UTF-8
  7. Authorization: Bearer tocholm.dk","Name":"Janet Schorr"},"Type":"required"}]}

我真的很困惑为什么我得到403,因为一切都应该正确设置.

任何帮助将不胜感激 :-)

/加斯帕

最佳答案
您为Microsoft Graph配置了委派权限,但调用了Outlook端点.您需要执行以下任一操作:
1.更改您的应用程序配置以获得Outlook / Office 365 Exchange Online的委派权限.
2.更改您的应用程序以使用Microsoft Graph端点(graph.microsoft.com),即https://graph.microsoft.com/v1.0/me/events并保留当前的应用程序配置.

猜你在找的JavaScript相关文章