-(void)getGoogleCalendar{
GTLServiceCalendar *calendarService = self.calendarService;
GTLQueryCalendar *calendarListQuery = [GTLQueryCalendar queryForCalendarListList];
[calendarService executeQuery:calendarListQuery completionHandler:^(GTLServiceTicket *ticket, GTLCalendarCalendarList * object, NSError *error) {
    for (GTLCalendarCalendarListEntry *calendar in object.items) {
       [self getEventsForTheGivenCalendar:calendar.identifier];
    }
    }];
}


首次登录后,它可以完美运行,但是当应用程序启动后,它会提示错误


  错误Domain = com.google.GTLJSONRPCErrorDomain代码= 401“该操作
  无法完成。 (需要登录)“ UserInfo = 0x79eb4f90
  {error =需要登录,GTLStructuredError = GTLErrorObject 0x79fa9270:
  {消息:“需要登录”代码:401数据:[1]},
  NSLocalizedFailureReason =(需要登录)}


我正在使用GTMOAuth2Authentication身份验证进行登录并存储用户详细信息。如果用户详细信息不是nil,则不要求登录,然后在获取日历时发生错误。

每次应用运行时如何获取GTLCalendar?

最佳答案

您应该设置服务授权者才能进行查询。

calendarService.authorizer = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:KEYCHAINITEMNAME
                                                                           clientID:CLIENTID
                                                                       clientSecret:CLIENTSECRET];

10-04 19:46