如何在不公开Google Calendar的前提下实现自有网站对其的读写操作
非公开Google Calendar自有站点受控读写方案
你之前使用API密钥调用日历API的方式本身仅支持访问公开日历资源,这是必须公开日历才能正常调用的核心原因。按以下步骤调整即可在不公开日历的前提下,仅允许你的自有站点完成读写操作:
1. 改用服务账号完成API鉴权
- 进入Google Cloud Console的IAM与管理模块,创建一个专属的服务账号,生成JSON格式的服务账号密钥文件,该文件仅存储在你的自有后端服务器中,禁止泄露到前端代码
- 打开Google Calendar的共享设置页,将上述服务账号的邮箱地址添加为共享用户,权限设置为查看和修改所有活动,此时日历无需设为公开,仅该服务账号拥有指定日历的读写权限
2. 所有API请求走自有后端转发
- 不要在前端直接调用Google Calendar API,所有日历读写请求均由你自有站点的后端服务转发,避免任何鉴权信息暴露到前端
- 在后端接口中添加请求校验规则,仅允许你的自有站点域名的Referer请求调用日历相关接口,可根据业务需要额外添加签名校验、登录状态校验等规则进一步加固
3. 后端实现日历读写逻辑
- 后端通过服务账号密钥完成Google Calendar API的鉴权调用,读取事件对应API方法为
Events: list,新增事件对应API方法为Events: insert - 前端仅需要和你的自有后端接口交互,无需接触Google平台的鉴权信息
可选加固方案
- 定期轮换服务账号密钥,发现密钥泄露后立即废弃旧密钥生成新密钥
- 对新增事件的请求内容做校验拦截,避免被恶意调用提交垃圾内容
- 若日历操作仅开放给你站点的特定用户,可叠加你站点自身的用户权限校验逻辑,进一步缩小操作权限范围
内容的提问来源于stack exchange,提问作者user1088417
相关产品推荐
相关产品推荐

