【问题标题】:Getting data from MS Live Calendar从 MS Live 日历获取数据
【发布时间】:2012-09-24 00:27:24
【问题描述】:

目前我正在从事一个门户项目,用于从多个网站(google、yahoo、live/hotmail)获取日历数据。 问题是我们的应用程序需要从这些网站获取日历数据的服务。我的团队已经摆脱了 google 和 yahoo 日历,但现在我们遇到了实时日历的问题。

到目前为止,我们已经尝试过但失败了:

  1. 使用 HTTP 请求获取数据似乎是不可能的,因为 http://login.live.com 完全使用 javascript 保护。我们花了 3 天时间来了解登录的 JS,但微软似乎比我们好得多:)
  2. 通过网络搜索 LIVE CONNECT API,但现在可以动态登录(通过提供用户名/密码)到 MS Live。我们不能使用实时登录按钮,因为我们的流程完成了一个服务层。 (或者也许我错过了什么?)

我有机会完成这个任务吗?

任何帮助、线索、技巧将不胜感激,谢谢

注意:我们的应用程序客户位于一个小型网络中,如果我们管理他们的 LIVE/YAHOO/GOOGLE 帐户,他们会同意。

【问题讨论】:

    标签: c# liveconnect live-connect-sdk


    【解决方案1】:

    答案是否定的!您无法通过提供电子邮件/密码从 MS LIVE 获取日历/事件,因为 MS LIVE 使用 OAUTH。

    您可以做的最好的方法是,从您的客户端应用程序中显示实时 OAUTH 登录,然后从那里获取身份验证令牌。然后将身份验证令牌传递给服务器端。获取您需要的日历或活动。

    步骤如下:

    获取您的应用程序客户端 ID

    转至:https://manage.dev.live.com/Applications/Index

    创建登录表单

    在您的客户端应用程序上,您通过显示浏览器控件来创建登录表单,网址为:

    https://oauth.live.com/authorize?response_type=token&client_id=YOUR_APP_CLIENTID&scope=SCOPE&locale=en&redirect_uri=https://oauth.live.com/desktop&auth_redirect=true&wa=wsignin1.0

    • YOUR_APP_CLIENTID:您在第一步注册时获得的客户端 ID。
    • 范围:应该是wl.calendars+wl.basic see more on documentation

    那么在用户允许认证后,浏览器会重定向到:

    https://oauth.live.com/desktop#access_token=ACCESS_TOKEN
       &token_type=TOKEN_TYPE&expire=EXPIRE
    

    您可以从那里提取 ACCESS_TOKEN。

    获取日历/事件

    所以现在您的客户端应用程序已经拥有 ACCESS_TOKEN,然后将其传递给您的服务以获取日历(请记住 ACCESS_TOKEN 有一个超时时间)。然后,您的服务应该执行 REST 调用:

    https://apis.live.net/v5.0/me/calendars?access_token=ACCESS_TOKEN
    

    https://apis.live.net/v5.0/me/events?start_time=2012-10-01T00:00:00Z
         &end_time=2012-10-03T00:00:00Z&access_token=ACCESS_TOKEN
    

    更多信息请参考:http://msdn.microsoft.com/en-us/library/live/hh826523.aspx

    祝你好运

    【讨论】:

      【解决方案2】:

      来自微软网站....

      您的应用可以使用 Live Connect API 来创建、读取、更新和 删除 Hotmail 用户的日历。您的应用也可以订阅 公共日历,例如假期列表。

      所以我认为这是你去看看的地方..Calendars (Live Connect API);是的,C# 中也有示例。

      概念说明...基本上您需要使用 Windows 8 中提供的public class LiveConnectClient 来完成此操作。

      using Microsoft.Live;  
      using Microsoft.Live.Controls;
      

      是包含实时连接客户端和相关操作的核心逻辑的名称空间。

      【讨论】:

      • 感谢您的回复,但我没有使用 Windows 8。我已经尝试了那里的示例(使用 silverlight)。但从示例中,登录过程调用浏览器并访问ms live login,然后从中获取会话。在我们的例子中,我们不能这样做,因为登录和获取数据过程是在服务层完成的。还是我错过了什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      相关资源
      最近更新 更多