【问题标题】:sharePoint online count unread message from office365sharePoint 在线计数来自 office365 的未读消息
【发布时间】:2014-12-29 08:19:51
【问题描述】:

作为一个旨在显着改善 SharePoint Online 网站的视觉方面的项目的一部分,我有点卡住了。在左侧横幅的主页上,用户希望查看他们在 Office365 中的未读邮件数。

我在母版页中创建了一个区域来放置结果。我认为 Rest API 曾经这样做过:

$.ajax ({
    type: "GET",
    url: " https://outlook.office365.com/ews/odata/Me/Folders/Inbox",
    dataType : "json",
    success : function (resp) {
        // count unread messages 
    },
    error : function (e) {
        alert (' Error121212 :' + JSON.stringify (e));
    }
 })

不幸的是,我收到了跨域之类的错误。我尝试使用 JSONP,但它也不起作用(未捕获的语法错误意外令牌)。

你能告诉我这是否是一个好习惯吗?我觉得无论如何我必须找到一种认证技术。 (在 JSONP 的情况下,我有一个弹出窗口要求我进行身份验证,然后显然在回调时出现问题)...

我想避免开发需要典型部署 Wsp 的类型...

提前感谢您的帮助。

【问题讨论】:

    标签: javascript ajax json sharepoint office365


    【解决方案1】:

    您的 ajax 请求 URL 似乎不正确。通过 API 获取收件箱消息的 URL 为:https://outlook.office365.com/api/v1.0/me/folders/inbox/messages

    收到响应后,您可以使用简单的 for 循环计算将 IsRead 属性设置为 false 的对象数并显示该计数。

    【讨论】:

    • 我试试这个 url 但不幸的是我有同样的错误:XMLHttpRequest 无法加载 outlook.office365.com/api/v1.0/me/folders/inbox/messages。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'url' 不允许访问。响应的 HTTP 状态代码为 401。你知道是否可以从另一个域站点调用 api 吗?谢谢
    • header 应该设置在 office365.com 域上,所以很遗憾,我不认为有什么办法可以规避这一点。
    • 好吧,我辞职了,我觉得我的问题没有简单的解决方案,很遗憾。
    【解决方案2】:

    这里的问题与 CORS 以及浏览器如何拒绝处理跨域请求有关。为了解决这个问题,通常你会要么

    • 更改远程服务器上的响应标头 - 这里不是一个选项
    • 使用某种代理来处理请求 - 这是 SharePoint 应用程序的用武之地。

    我知道您规定要避免使用 WSP 样式部署,但根本没有办法,您必须使用 SharePoint 应用程序模型

    This 文章很长的路要回答你的问题,但要完成的基本步骤如下

    1. 在 Visual Studio 中创建 SharePoint 托管应用
    2. 在 App Manifest 中,您需要使用 AppManifest 部分定义与远程主机(本例中为 outlook.office365.com 的主机)的信任关系

    3. 使用SP.RequestExecutor.executor代表您提出请求

    【讨论】:

    • 我已经放弃了,但我会再接再厉。我会读的。非常感谢您提供这些信息。
    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 2018-08-28
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多