1

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

到目前为止,我已经设法获得了访问令牌和刷新令牌。我计划存储刷新令牌,以便我的应用程序可以在用户注销很久后访问特定的谷歌日历。

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

是否可以创建一个 CalendarService 类并给它一个我已经拥有的访问令牌?

4

1 回答 1

1

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

  1. 通过 oauth 获取访问权限
  2. 刷新过期令牌
  3. 使用访问令牌做一些事件

该项目托管在这里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 的事件的方式。

希望能帮助到你

于 2013-12-19T17:47:01.063 回答