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