任务是向现有的颤振应用程序添加云功能。云功能的目标是每隔一段时间运行一次,看看用户帐户是否有即将到来的事件出现在Google日历中。
用户创建帐户并使用Google登录插件登录,然后存储在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中,以供以后在云函数中使用。
我有来自Google控制台中web应用程序/云功能api项目的客户端id &客户端机密。
现在,我不确定如何使用googleapis /日历节点项目来使用这个访问令牌来进入用户日历。
所有示例似乎都希望我再次创建另一个具有作用域的oauth2客户机来检索令牌,但显然用户不会这样做,因为当用户不使用该应用程序时,他的所有这些都会发生在后台。
我是否需要建立一个服务帐户,然后可以代表用户访问这些日历?这能办到吗?我正努力通过Google文档找到答案。
发布于 2019-10-01 16:24:21
我想(但让我们看看专家是怎么说的),因为云函数是代表(!)因为它是异步操作的,所以服务帐户是正确的方法。
为了支持这一点,云函数作为服务帐户运行,因此,它们对其他Google服务(包括Calendar)的任何调用都将作为该服务帐户。
您可能希望考虑委托链接。
在你们实施这一点之前,我鼓励你们等着看专家们说些什么。但是,在您等待时,可能值得查看该链接;-)
https://stackoverflow.com/questions/58188139
复制相似问题