标签: google-calendar-api

如何在没有oAuth身份验证的情况下连接到Google Calendar API?

我一直在研究Google Calendar API和有关身份验证的文档(http://code.google.com/apis/calendar/v3/using.html#auth).这里提到的用例似乎是编写一个访问用户日历的应用程序.但是,我正在编写一个网页,该网页将访问网站所有者的日历并仅显示该日历的信息.因此,我不希望用户输入他们的Google帐户信息,这是oAuth想要做的事情.

基本上,我正在寻找一种方法来访问单个私有Google日历,并通过将凭据直接传递给服务来对其进行身份验证.

这里有一个类似的问题:如何使用OAuth与Google日历仅访问一个日历? 这似乎表明海报最初是直接传递凭证.此功能是否仍然可用?你如何处理我描述的用例?

oauth google-calendar-api google-api

29
推荐指数
2
解决办法
4万
查看次数

如何建立谷歌日历活动的HTML链接?

使用Google日历API v3,我在Google日历中添加了一个事件.现在我想建立一个html链接,以便有人可以点击并查看日历事件.

这是我尝试过的:

<a href="https://www.google.com/calendar/feeds/default/private/full/{{ event.googleID }}">View Google</a>

href看起来像:
https://www.google.com/calendar/feeds/default/private/full/bigstringhere1ovmuup7mjf0

问题是我得到401错误"需要授权"

如何根据Google日历ID构建查看/编辑日历活动的链接?

google-calendar-api google-api

28
推荐指数
4
解决办法
5万
查看次数

从电子表格创建Google日历事件,但可以防止重复

我正在尝试编写一个脚本,该脚本将从Google电子表格中获取数据,并在我的Google日历中创建活动.

我管理得很好,但每次运行它都会产生重复.所以现在我试图通过在电子表格中创建一个列17来防止这种情况,每列自动生成唯一的事件ID,然后每次运行脚本时,它将查看每行的事件ID并删除相应的事件如果我已经更改了行,则在使用原始数据或更新的数据重新创建它之前在日历中.

我是新手编写的任何类型的脚本并拼凑在一起,但现在正在撞墙.任何人都可以解决这个问题吗?

function CalInsert() {
    var cal = CalendarApp.getDefaultCalendar();
    var id = SpreadsheetApp.getActiveSheet().getRange(2,17).getValue();

    if (id != 0) {
        var event = cal.getEventSeriesById(id);
        event.deleteEventSeries();
    }

    var sheet = SpreadsheetApp.getActiveSheet();
    var startRow = 2; // First row of data to process
    var numRows = sheet.getLastRow(); // Number of rows to process
    var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
    var data = dataRange.getValues();

    for (i in data) {
        var row = data[i];
        var title = row[0]; // First column
        var desc = …
Run Code Online (Sandbox Code Playgroud)

google-calendar-api google-sheets google-apps-script

26
推荐指数
1
解决办法
5万
查看次数

为什么Google Calendar API(oauth2)会回复"权限不足"?

我正在对以下URL进行get请求({id}替换为web界面中的id):

https://www.googleapis.com/calendar/v3/calendars/{id}
Run Code Online (Sandbox Code Playgroud)

一些断言:

  1. 正在使用有效的访问令牌正确设置Authorize标头(该令牌适用于Analytics API)

  2. 我为oauth2设置了以下范围,它正确显示:

    https://www.googleapis.com/auth/calendar
    
    Run Code Online (Sandbox Code Playgroud)
  3. 令牌似乎没有过期; 它适用于Analytics API.

    { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
    
    Run Code Online (Sandbox Code Playgroud)

curl google-calendar-api oauth-2.0 google-oauth

26
推荐指数
3
解决办法
3万
查看次数

从日历中获取活动

我的问题是,我必须制作一个演示应用程序,其中我想阅读Google日历的事件,因为我已经手动插入事件标题,事件时间和整个事件的详细信息.现在我需要从那个日历中读取那些事件.为此,我尝试使用提供日历API类的gcode(谷歌代码)API.但我仍然无法阅读这些事件.

android calendar google-calendar-api

25
推荐指数
4
解决办法
7万
查看次数

ICS时区不起作用

我制作了一个包含很多活动列表的ICS Feed.我的时区似乎不起作用.

在下面的示例中,您会看到我的活动应该从07:55:00开始到09:30:00结束.这是它应该在我的日历中显示的内容.相反,它显示09:55:00和11:30:00 - 两个小时的偏移.时区应设置为Europe/Copenhagen但不会产生任何影响.

谁能告诉我如何才能实现正确的时间?

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Test Calendar
X-WR-TIMEZONE:Europe/Copenhagen
X-WR-CALDESC:Test Calendar
BEGIN:VEVENT
DTSTART:20110926T075500Z
DTEND:20110926T093000Z
DTSTAMP:20111002T133505Z
UID:E9QNQ30EG-5SRB7-QQKL3-2JUUZ-477LBRV4IMSJ78
CREATED:20111002T133505Z
LAST-MODIFIED:20111002T133505Z
LOCATION:B34
SEQUENCE:3
SUMMARY:2abc3c Ma3 CD (B34)
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)

icalendar timezone google-calendar-api offset

22
推荐指数
1
解决办法
2万
查看次数

尝试检索Google日历事件时,WEB_HOOK频道不可用

我正在尝试为Google日历使用推送通知

回调端点托管在Heroku上.appname.herokuapp.com已在Search Console中进行验证,并已添加到Google控制台API和服务允许的域列表中.

请求

POST /calendar/v3/calendars/CALENDAR_ID/events/watch HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer TOKEN
Content-Type: application/json
{
    "id":"1",
    "type": "web_hook",
    "address":"https://APPNAME.herokuapp.com/change"
}
Run Code Online (Sandbox Code Playgroud)

响应

400 Bad Request
{
    "error": {
        "errors": [
            {
                "domain": "push",
                "reason": "channelUnknown",
                "message": "WEB_HOOK channel unavailable for: 
{address=https://APPNAME.herokuapp.com/change}"
            }
        ],
        "code": 400,
        "message": "WEB_HOOK channel unavailable for: {address=https://APPNAME.herokuapp.com/change}"
    }
}
Run Code Online (Sandbox Code Playgroud)

什么

WEB_HOOK频道不可用

错误的意思?

编辑:与顶级域名相同的结果,证书的主题与域名完全匹配.

google-calendar-api google-api heroku push-notification

22
推荐指数
1
解决办法
556
查看次数

如何正确使用Google Calendar API的Events.Insert命令?

所以我一直在使用REST方法调用Google的API.我需要将事件插入到我拥有ID的特定日历中.这是我发送的POST请求:

地址:https: //www.googleapis.com/calendar/v3/calendars/ {calendarID}/events

身体:

Authorization:  Bearer {access_token}
{
 "end": {
  "dateTime": "2012-08-30T12:30:00",
  "timeZone": "America/Chicago"
 },
 "start": {
  "dateTime": "2012-08-30T14:00:00",
  "timeZone": "America/Chicago"
 },
 "summary": "E E 306",
 "colorId": "9"
 "kind": "calendar#event"
}
Run Code Online (Sandbox Code Playgroud)

这是我不断得到的回应:

{
 "error":{
  "errors":[
   {
    "domain":"calendar",
    "reason":"timeRangeEmpty",
    "message":"The specified time range is empty.",
    "locationType":"parameter",
    "location":"timeMax"
   }
  ],
  "code":400,
  "message":"The specified time range is empty."
 }
}
Run Code Online (Sandbox Code Playgroud)

我不明白我可能做错了什么.我输入了所有必要的数据,它要求我提供一个事件甚至不存在的参数.我也找不到关于这个特殊问题的任何文件.有没有人看到我失踪的东西?

java google-calendar-api google-api

21
推荐指数
1
解决办法
7491
查看次数

未经授权通过JavaScript访问Google Calendar API

我正在尝试访问包含国家法定假日的公共日历(来自Google日历):

calendarId: 'pt_br.brazilian#holiday@group.v.calendar.google.com'
Run Code Online (Sandbox Code Playgroud)

由于日历是公开的,我以为我只能使用API​​密钥访问它:

function OnLoadCallback() {
    var config = {
        client_id: '32j4lk32j5kj342l5h.googleuser.com', //fake client id
        scope: 'https://www.googleapis.com/auth/calendar.readonly'
    };
    gapi.client.setApiKey('fId345AM20HXXXXXXXXXXXXXXXXgT3f9kyp2REfkaw2'); //fake api key
    gapi.client.load('calendar', 'v3', function() {
        var today = new Date(),
            request;

        request = gapi.client.calendar.calendarList.get({
            calendarId: 'pt_br.brazilian#holiday@group.v.calendar.google.com',
            timeMin: (new Date(today.getFullYear(), today.getMonth(), today.getDay(), 0, 0, 0, 0)).toISOString(),
            timeMax: (new Date(today.getFullYear(), today.getMonth(), today.getDay(), 23, 59, 59, 999)).toISOString(),
            fields: 'items(creator(displayName,email),end,endTimeUnspecified,start,summary)'
        });

        request.execute(function(response) {
            window.alert('length of items: ' + response.items.length);
        });

    });
}
Run Code Online (Sandbox Code Playgroud)

但是,我一直收到以下响应,这是一个401(未授权)错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": …
Run Code Online (Sandbox Code Playgroud)

javascript google-calendar-api google-api oauth-2.0

21
推荐指数
1
解决办法
2万
查看次数

谁拥有服务帐户通过Google Calendar API创建的日历,以及如何共享这些日历?

假设我有一个some.account@gmail.com带有项目的Google帐户project-1(在Google Developer Console中配置为Google App Engine应用程序)和一个包含12..@developer.gserviceaccount.com属于它的电子邮件地址的服务帐户.

我知道如何使用此服务帐户创建日历并以编程方式操作其条目:我使用Google API客户端库(Java版本,带有服务帐户凭据)在我的Google App Engine应用程序中调用Google Calendar API只是.但是,任何此类创建的日历似乎都由服务帐户明确拥有,而不是由我的Google帐户使用.我从以下观察中得出结论:

  • 当我在Google日历用户界面中查看我的Google帐户的日历时,所有以编程方式创建的日历都不会显示在日历下My calendars.
  • 当我尝试通过发出Other calendars| 来访问这样的日历 Add a friend´s calendar使用服务帐户的电子邮件地址,我可以发送请求,但它永远不会得到答复(可能是因为服务帐户的电子邮件地址不是"真实的"电子邮件地址).
  • 当我以编程方式创建日历时,我没有设置CalendarListEntry#hidden,因此应该应用默认值false.

所以我的问题是:如何在普通的Google Calendar Web UI中访问使用Google Calendar API(以及我的案例中的Java客户端)以编程方式创建的日历和日历条目.例如,服务帐户可以与其拥有的Google帐户共享其日历,还是可以使用UI中的服务帐户凭据直接操作Google帐户的日历.

我意识到在同一主题上有一些先前的问题,但到目前为止它们并没有帮助我解开这个谜团.

google-app-engine google-calendar-api google-account service-accounts

21
推荐指数
1
解决办法
7192
查看次数