我有一个脚本来修改我的工作提供的GCal。对于身份验证,我使用访问/刷新令牌(如:https://developers.google.com/people/quickstart/python)。
我现在想在码头上运行剧本。对于身份验证,我已经决定使用一个服务帐户。
我已经创建了服务帐户,与它共享了我的日历,并接受了日历。在创建服务帐户的Google控制台中,我将权限设置为"owner“。
当我尝试使用服务帐户(尚未在Docker中)运行脚本时,它只返回每个日历事件的属性子集。我能看到那个accessRole = freeBusyReader。
如何授予对此服务帐户的写入访问权限?我试过:
rule = service.acl().get(calendarId="myId", ruleId='user:service@myApp-351310.iam.gserviceaccount.com').execute() # Get this from acl_items
rule["role"] = "owner"
service.acl().update(calendarId="myId", ruleId="user:service@myApp-351310.iam.gserviceaccount.com", body=rule).execute()我读过一些关于授权和冒充用户的文章。我不确定这是否有要求。有人知道怎么做吗?
发布于 2022-06-25 14:49:18
验证服务帐户的代码与用于已安装应用程序的示例略有不同,如下所示。
credentials = ServiceAccountCredentials.from_json_keyfile_name(
key_file_location, scopes=scopes)
credentials = credentials.create_delegated(user_email)这段视频显示如何创建Google Oauth2服务帐户凭据。只需确保启用Google日历api即可。
记住,服务帐户只能通过向google工作区域上的用户进行域范围的委托来支持。您不能使用标准的google用户。
我推荐遵循将域范围的权限委托给您的服务帐户。示例,它展示了如何从工作区域将委托设置到服务帐户。只需将有关admin sdk的部分更改为google日历的部分,因为这是您要连接的api。
将user_Email添加为您希望服务帐户模拟的域上的用户。
https://stackoverflow.com/questions/72751156
复制相似问题