Задача - добавить облачную функцию в существующее приложение Flutter. Цель облачной функции - запускать ее очень часто и проверять, есть ли в учетных записях пользователей предстоящие события в их календарях Google.
Пользователи создают учетные записи и входят в систему с помощью плагина Google Sign-in, а затем сохраняются в firebase.
Я добавил нужную область в объект GoogleSignIn
static GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'email',
'https://www.googleapis.com/auth/calendar.events.readonly',
],
);
Процесс входа в систему
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
//update user table in firebase
В этот момент процесс входа в Google возвращает токен доступа , который я сохранил в firebase для дальнейшего использования в облачной функции.
У меня есть идентификатор клиента и секрет клиента из проекта API веб-приложения / облачной функции в консоли разработчика Google.
Теперь я не уверен, как использовать проект узла googleapis / calendar для использования этого токена доступа для входа в календарь этого пользователя.
Похоже, что во всех примерах я хочу создать еще одного клиента oauth2 с областями действия для извлечения токена, но, очевидно, пользователь не будет этого делать, поскольку все это будет происходить в фоновом режиме, когда пользовательприложение не используется.
Нужно ли создавать служебную учетную запись, которая затем может обращаться к этим календарям от имени пользователей? Можно ли это сделать? Я пытаюсь найти ответ в Документации Google.