访问.net中的google calendar api v3

时间:2012-05-29 07:11:36

标签: .net oauth google-calendar-api

我试图将我的asp.net(vb.net)应用程序连接到谷歌日历,以便我可以在谷歌日历上发布活动。

到目前为止,我已设法获取访问令牌,并刷新令牌。我计划存储刷新令牌,以便我的应用可以在用户注销后很长时间访问特定的Google日历。

所以,我有我的访问令牌和刷新令牌,现在是什么?我找不到任何可以通过访问令牌连接到谷歌日历api v3的示例 - 所有示例,即使在googles网站上,也涉及使用客户端库来获取访问令牌(我已经已经得到了),并创建了一个没有传递参数的新CalendarService()对象。

是否可以创建CalendarService类并为其提供我已有的访问令牌?

1 个答案:

答案 0 :(得分:1)

花了一段时间来弄清楚oauth的工作流程,所以我创建了一个基本概念编码的小项目

  1. 通过oauth访问
  2. 刷新过期令牌
  3. 使用访问令牌执行某些操作
  4. 项目在这里托管https://code.google.com/p/csharp-googlecalendar-api-v3-oauth2/,它在csharp中,但我确实做到了尽可能简单

    您可能希望查看此特定文件https://code.google.com/p/csharp-googlecalendar-api-v3-oauth2/source/browse/CalChecker/simpleEvent.aspx.cs

    string accesstoken = "usersaccesstoken";
    string client_id = "getclientidfromcloud";
    string client_secret = "getclientsecretfromcould";
    string useremailaccount = "whosecal@email.com";
    
    var httpWebRequest1 = (HttpWebRequest)WebRequest.Create("https://www.googleapis.com/calendar/v3/calendars/" + WebUtility.HtmlEncode(useremailaccount) + "/events");
    httpWebRequest1.ContentType = "text/json";
    httpWebRequest1.Method = "GET";
    httpWebRequest1.Headers["Authorization"] = "Bearer " + accesstoken;
    var httpResponse1 = (HttpWebResponse)httpWebRequest1.GetResponse();
    using (var streamReader = new StreamReader(httpResponse1.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
    }
    

    所有代码都在创建一个GET WebRequest,注意授权标题。这就是你如何传递访问令牌来调用需要Auth的事件。

    希望有所帮助