正如许多其他人所写的那样,我也遇到了这个问题,我在尝试set new email signature via the API时遇到了这个问题
确切的API调用是:
sendAsConfiguration = {
'signature': 'Test email signature'
}
result = gmailService.users().settings().sendAs().patch(userId='xxx@domain.com',
sendAsEmail="xxx@domain.com",
body=sendAsConfiguration).execute()
确切的答复是:
google.auth.exceptions.RefreshError: ('unauthorized_client: Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.', '{\n "error": "unauthorized_client",\n "error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested."\n}')
我的情况如下:
我需要它用于生产项目,而不是测试项目。
我已阅读以下问题和解答(以及它们的许多其他变体),但answer 1,answer 2
无效关于答案2,我不确定我是否理解这一点,因此,如果这是真正的解决方案,那么最好采取具体步骤。
我并没有添加代码本身,因为它可以正常工作(已经在另一个项目上进行了测试,并且可以正常工作)。请在下面查看服务帐户的设置
G Suite设置 最初,我将两个合并范围都放在同一个服务帐户下,结果却相同。在上一次测试中,我尝试了每个仅具有一个作用域的服务帐户。结果相同
在此方面寻求帮助会很棒,
更新1
更新2
我已经比较了有工作的项目和没有工作的项目。我注意到的唯一区别是,在工作项目中没有API密钥。既然人们写了关于OAuth的文章,我想我可能会给它一个机会。但是由于这是生产环境,所以我不想删除它们,尤其是由于它是由Google自动生成的,因此我不知道它们在哪里使用。我认为它们并没有在任何地方使用,但我不确定。
我尝试向工作帐户中添加一个API密钥,但该密钥仍然有效,这给了我更大的动力,使生产设置保持不变。
更新3
我删除了API密钥,但没有帮助。
谢谢
答案 0 :(得分:0)
我发现这是服务帐户的角色问题。
这使我可以查询任何域用户的日历事件列表。
答案 1 :(得分:0)
我通过狂野委托创建了一个服务帐户。而且我在代码和G Suite帐户中都添加了正确的作用域。
在G Suite管理员的“管理API客户端访问”页面上添加服务帐户及其作用域之前,必须启用“将域范围的权限委派给服务帐户”。否则,它将失败,并显示为“未授权客户端使用此方法检索访问令牌,或者未授权客户端使用任何请求的范围”。错误,需要删除API客户端并再次添加。