Google 日历 API iOS return 生日?

Google Calendar API for iOS return BirthDays?

我正在尝试从 Google 日历 API 获取 iOS 应用程序的生日。现在我可以从 Google 日历中获取事件。

- (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];
    }
}

如何从 Google 日历 API 中获取 iOS 的生日。 我已经阅读了 Google 日历 API 的文档: https://developers.google.com/google-apps/calendar/quickstart/ios

我以前研究过这个,这是我发现的。虽然默认情况下存在,但生日事件没有有效的 'eventIDs',看起来像 2016_BIRTHDAY_self(对于今年),因此当您使用 Events: list 获取它时,不会返回任何内容。您必须先添加它:

在您的 Google 日历上:

  1. 单击日历中的默认 birthday icon
  2. 点击'Copy to my calendar'。
  3. 这将打开事件 UI。您可以在说明中添加其他详细信息。然后保存。

现在,重复的生日活动已添加到您的日历中,但这次它具有有效的 eventID。因此,当您使用 Events:list 拨打另一个电话时,它会 returns the event.

如何在 iOS 中执行此操作?

URI 请求:

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

你可以use 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];

使用人物获取生日 API:

1.Set 您在 Google+ Basic Information 中 public 的生日,方法是勾选 'show year of birth'

  1. 利用 People API URI 请求:

    获取https://www.googleapis.com/plus/v1/people/userId

使用 Try-it 现在使用参数进行测试:

userId -> me
fields -> birthday
Authorize and Execute.

有可能从google日历获取所有生日而不复制到您的日历

从 google 获取 生日日历 id。

  • 打开google日历
  • 点击生日日历设置

  • 您将从日历地址
  • 获得日历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?) {
    
    
       }
    

    对我有用

谢谢。