如何在授权后再次使用身份验证

时间:2015-06-08 06:21:52

标签: ios google-calendar-api google-oauth

-(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 Code = 401“操作   无法完成。 (需要登录)“UserInfo = 0x79eb4f90   {error =需要登录,GTLStructuredError = GTLErrorObject 0x79fa9270:   {message:“需要登录”代码:401数据:[1]},   NSLocalizedFailureReason =(需要登录)}

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

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

1 个答案:

答案 0 :(得分:1)

您应该设置服务授权程序以便能够进行查询。

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