Доступ к пользовательским календарям Google в облачной функции Firebase - PullRequest
0 голосов
/ 01 октября 2019

Задача - добавить облачную функцию в существующее приложение 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.

1 Ответ

0 голосов
/ 01 октября 2019

Я думаю (но давайте посмотрим, что говорят эксперты), потому что облачные функции работают от имени (!) Пользователя-пользователя и потому что они работают асинхронно, учетная запись службы является правильным подходом.

В поддержку этого облачные функции запускаются как учетная запись службы, поэтому любые звонки, которые они совершают в другие службы Google (включая Календарь), будут выполняться в качестве этой учетной записи службы.

Возможно, вы захотите рассмотреть делегированную аутентификацию * 1005. * ссылка

Прежде чем приступить к реализации, я призываю вас подождать и посмотреть, что скажут эксперты. Но, может быть, стоит пересмотреть ссылку, пока вы ждете; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...