当前位置: 首页 > 知识库问答 >
问题:

在Firebase Cloud功能中访问用户的Google日历

詹弘毅
2023-03-14

负责将云功能添加到现有Flatter应用程序。云功能的目标是每隔一段时间运行一次,看看用户帐户在谷歌日历中是否有即将发生的事件。

用户使用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中,以供以后在云功能中使用。

我有客户id

现在,我不确定如何使用googleapis/日历节点项目来使用此访问令牌进入该用户日历。

所有的例子似乎都希望我再次使用范围创建另一个oauth2客户端来检索令牌,但显然用户不会这样做,因为当用户不使用应用程序时,他的一切都将发生在后台。

我是否需要创建一个服务帐户,以便代表用户访问这些日历?这能做到吗?我正在努力通过谷歌文档找到答案。

共有1个答案

苏鹏鹍
2023-03-14

我认为(但让我们看看专家怎么说),因为云函数是代表人类用户运行的(!)并且因为它是异步运行的,所以服务号是正确的方法。

为了支持这一点,云功能作为服务帐户运行,因此,他们对其他谷歌服务(包括日历)的任何调用都将作为此服务帐户。

您可能希望考虑授权链接

在你实施这个之前,我鼓励你等着看专家们怎么说。但是,当您等待时,可能值得查看链接;-)

 类似资料:
  • 我已经成功地部署了一个云函数,它对一些数据进行一些基本的预处理,并将其上传到gSheet 现在,触发器url接受未经验证的外部调用,如果url最终落入坏人之手,则会导致账单过多的风险。 我想知道是否有任何方法可以限制对IAM中的云调度器的调用,从而防止外部调用服务。 阅读周围的内容似乎在请求中包含一些标头并在函数中检查它可能是一种基本的强制执行方法基本的真实性。

  • 我正在创建一个Node JS(Express)web应用程序,一旦用户登录,它将显示用户的Google日历事件。 将有多个用户,名称和电子邮件地址等数据存储在数据库中。 用户登录后,如何在不需要任何其他用户输入的情况下检索与用户关联的Google日历事件? 我在这里实现了Google的快速入门示例https://developers.google.com/google-apps/calendar/

  • 我正在使用谷歌日历(v3)API,与谷歌应用程序,并希望使用一个单一的oauth2凭据来确定用户在任何给定的点上空闲/忙碌。

  • 我试图使用VBScript和Oauth脱机访问谷歌日历API。我设法获得了一个刷新令牌和一个访问令牌,现在我想进入实际使用API的步骤,使用以下代码: 我得到的回应是: 即使访问令牌是有效的--如果我将sURL更改为https://www.googleapis.com/oauth2/v1/tokeninfo并运行该脚本,我将得到以下响应,显示一个有效的令牌: 如果我粘贴URL https://ww

  • 我想使用谷歌的REST API访问公共日历。 Google的日历API建议我需要OAuth令牌才能访问日历: https://developers.google.com/google-apps/calendar/auth 然而,我正在访问一个公共日历,并且正在服务器上执行此操作,因此不能/不应该要求用户进行身份验证。 我使用node.jsapi: 这将返回“您的客户端发出了一个格式错误或非法的请求

  • 我有一个管理用户谷歌日历的web应用程序。最近,我在检索日历列表时遇到了一个“无效凭据”错误,并发现该用户帐户是一个g套件帐户(因为不同的域)。但是,我仍然可以获得访问令牌和刷新令牌。我还可以从帐户中获取开放ID信息。但无法访问日历。其他帐户以gmail结尾。com工作正常。 我是否错过了这些g套件用户的身份验证?