当前位置: 首页 > 知识库问答 >
问题:

iOS回归生日的谷歌日历API?

邹普松
2023-03-14

我试图从谷歌日历APIiOS应用程序的生日。现在我可以从谷歌日历获取事件。

- (void)fetchEvents {
GTLQueryCalendar *query = [GTLQueryCalendar queryForEventsListWithCalendarId:@"primary"];
query.maxResults = 10;
query.timeMin = [GTLDateTime dateTimeWithDate:[NSDate date]
                                     timeZone:[NSTimeZone localTimeZone]];;
query.singleEvents = YES;
query.orderBy = kGTLCalendarOrderByStartTime;

[self.service executeQuery:query
                  delegate:self
         didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];}

- (void)displayResultWithTicket:(GTLServiceTicket *)ticket
         finishedWithObject:(GTLCalendarEvents *)events
                      error:(NSError *)error {
    if (error == nil) {
        NSMutableString *eventString = [[NSMutableString alloc] init];
        if (events.items.count > 0) {
            for (GTLCalendarEvent *event in events) {
                GTLDateTime *start = event.start.dateTime ?: event.start.date;
                NSString *startString =
                [NSDateFormatter localizedStringFromDate:[start date]
                                               dateStyle:NSDateFormatterShortStyle
                                               timeStyle:NSDateFormatterShortStyle];
                [eventString appendFormat:@"\n  %@\n  %@\n\n%@\n", event.summary, startString, event.descriptionProperty];

            }
        } else {
            [eventString appendString:@"No upcoming events found."];
        }

        NSLog(@"eventString %@",eventString);

    } else {
        [self showAlert:@"Error" message:error.localizedDescription];
    }
}

如何从谷歌日历API获取生日iOS。我通过这个留档谷歌日历API:https://developers.google.com/google-apps/calendar/quickstart/ios

共有2个答案

柴文林
2023-03-14

可以从google日历中获取所有生日,而无需复制到日历

获取生日日历ID从谷歌。

  • 打开谷歌日历
  • 点击生日日历设置

>

  • 您将从日历地址获得日历id
  • 使用该日历id获取事件

    You can also get Calendar id through Google API
    https://developers.google.com/google-apps/calendar/v3/reference/calendarList/list
    

    对于iOS,请检查下面的代码

    let query = GTLRCalendarQuery_EventsList.queryWithCalendarId("calendar id")
    service.executeQuery(
        query,
        delegate: self,
        didFinishSelector: #selector(displayResultWithTicket(_: finishedWithObject:error:)))
    

    委托方法

    func displayResultWithTicket(
    ticket: GTLRServiceTicket,
    finishedWithObject response : GTLRCalendar_Events,
                       error : NSError?) {
    
    
       }
    

    它对我有用

    谢谢。

  • 燕野
    2023-03-14

    我以前做过这个,这就是我发现的。虽然默认情况下存在,但生日事件没有有效的“EventID”,看起来像2016年的生日(今年),所以当您使用events:list获取它时,不会返回任何内容。您必须首先添加它:

    在您的谷歌日历上:

    1. 单击日历中的默认生日图标

    现在,重复的生日事件被添加到您的日历中,但这一次,它有一个有效的事件ID。因此,当您使用Events: list进行另一个调用时,它会返回事件。

    如何在iOS做到这一点?

    URI请求:

    GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    

    您可以使用NSURLConnection:

    // Create the request.
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]];
    
    // Create url connection and fire request
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    

    使用People API获取生日:

    1.勾选“显示出生年份”,在谷歌基本信息中将您的生日设置为公开

    使用人员API URI请求:

    收到https://www.googleapis.com/plus/v1/people/userId

    使用“立即试用”来测试参数:

    userId -> me
    fields -> birthday
    Authorize and Execute.
    
     类似资料:
    • 我有一个python脚本,它将我的一些约会同步到两个不同的谷歌账户,两个账户都有一个谷歌日历,显然设置相同(时区设置也相同),在调用下载约会列表的时候然而,在日历上,调用返回具有不同日期格式的约会,具体取决于我要查询的日历。 使用的库是google开发的库(使用的Python版本是3.6) 脚本(在两种情况下都在同一台计算机上运行)如下所示: 我想这是一些关于日历配置的问题,但是我在设置中没有找到

    • 在使用GoogleCalendarAPI(与python一起使用)时,我已经能够获得我想要的变量,因此我可以将事件导出到文本文件中。然而,一个变量(位置)触发了一个错误,我不知道为什么。 这直接来自google的开始代码,我还添加了我想要的变量: 它会打印一个即将到来的约会列表,包括地点,但它会停止并向我抛出这个错误 这是凭据/json的问题吗?我使用的是谷歌日历api的旧版本吗?我怎么检查?我的

    • 谷歌日历API…/auth/Calendar查看、编辑、共享和永久删除您可以使用谷歌日历访问的所有日历 谷歌日历API…/auth/Calendar。acls查看并更改您拥有的Google日历的共享权限 谷歌日历API…/auth/Calendar。事件查看和编辑所有日历上的事件 CalendarQuickstart或CalendarReader很好,它们从日历中读取,但:当我尝试写入日历时,我得

    • 我想知道我是否需要Google java客户端库才能从GAE访问我的Google日历。默认情况下,它们是Google App Engine SDK的一部分吗? 此外,我找不到一个很好的示例或教程来展示如何从Google Cloud Platform应用程序创建、读取、更新和删除Google日历事件。 非常感谢,如果您可以提供相同的代码示例或链接到适当的工作教程。

    • 我有一个应用程序使用s2s与谷歌日历API的连接。我需要在不同的用户日历中创建事件。若要使之成为可能,用户应转到日历的设置并将其日历共享到服务帐户。但我想为用户简化这一点 - 这样他们就不需要去他们的日历设置。我没有用于用户交互的界面 - 这是一个机器人。如何以其他方式访问用户的日历?

    • 我希望我的应用在用户的 Google 日历上添加/删除/更新事件。应用只需删除和更新应用本身已添加的事件。 我是否正确地理解了这一点,为了使其正常工作,用户必须向应用程序授予对其Google日历的完全访问权限,这意味着该应用程序可能会读取和删除任何日历上的私人事件? 或者,有没有办法限制用户对应用程序的访问权限,例如,允许应用程序创建单个日历,只允许它访问该日历上的事件? 我已经通读了相关的谷歌日