Я знаю, что на этот вопрос уже есть ответы, но я не мог решить свою проблему, глядя на них,
поэтому я надеюсь, что вы сможете мне помочь или, по крайней мере, посоветовать мне, что попробовать, потому что я не уверен, что делать или как отлаживать, чтобы решить мою проблему.
Я пытаюсь перечислить все события в календаре моей компании, используя Google Calendar Api .
Я использовал тот же код в этом вопросе : Используя dart и flutter с API календаря Google, чтобы получить список событий в календаре пользователя
И я выполнил все 6 шагов из ответа в вопросе выше.
По какой-то причине вызов clientViaServiceAccount
не возвращает никаких результатов и ошибок.
Кажется, что он выполняет бесконечность l oop.
Это код, который я я использую, и я могу видеть только напечатанные "getCalendarEvents". Я не вижу сообщения «ЗДЕСЬ» или каких-либо ошибок. Таким образом, проблема наверняка возникает в clientViaServiceAccount
.
Я редактировал код с учетом предложения Iamblichus , но проблема в том, что я даже не могу добраться до CalendarApi
. Код размещен на clientViaServiceAccount
.
import 'package:flutter/material.dart';
import 'package:googleapis_auth/auth_io.dart';
import 'package:googleapis/calendar/v3.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
CalendarAPI.getCalendarEvents();
return MaterialApp(
title: 'Flutter Demo',
home: Container(),
);
}
}
class CalendarAPI {
static final _accountCredentials = new ServiceAccountCredentials.fromJson(r'''
{
"private_key_id": myPrivatekeyId,
"private_key": myPrivateKey,
"client_email": myClientEmail,
"client_id": myClientId,
"type": "service_account"
}
''');
static final _scopes = [CalendarApi.CalendarScope];
static void getCalendarEvents() {
print('getCalendarEvents');
clientViaServiceAccount(_accountCredentials, _scopes).then((client) {
print('HERE');
var calendar = new CalendarApi(client);
print(calendar);
// Added iamblichus answer
var calendarListEntry = CalendarListEntry();
calendarListEntry.id = calendarId;
calendar.calendarList.insert(calendarListEntry).then((_) {
print('CALENDAR ADDED');
var calEvents = calendar.events.list(calendarId);
calEvents.then((Events events) {
events.items.forEach((Event event) {
print(event.summary);
});
}).catchError((e) => print(e));
}).catchError((e) => print(e));
}).catchError((e) => print(e));
}
}
РЕДАКТИРОВАТЬ ДЛЯ ОТВЕТА НА КОММЕНТАРИЙ iamblichus 15 июля в 12:31
Я создал службу Учетные данные учетной записи на странице изображения, показанного ниже.
Как только я создал ключ, я загрузил файл . json был загружен с учетными данными.
Я скопировал содержимое этого файла и вставьте в функцию ServiceAccountCredentials.from Json, чтобы учетные данные не могли быть неправильными.
И даже если учетные данные были неправильными, почему я не вижу ошибку, что вызов clientViaServiceAccount
не получается?
Я ловлю любую ошибку и печатаю ее на экране с последним }).catchError((e) => print(e));
.
По какой-то причине вызов clientViaServiceAccount
ничего не делает, и я не могу понять, как найти причину этого. введите описание изображения здесь