正如许多其他人所写,我也遇到了这个问题,我在尝试通过 API 设置新的电子邮件签名时遇到了这个问题
确切的 API 调用是:
sendAsConfiguration = {
'signature': 'Test email signature'
}
result = gmailService.users().settings().sendAs().patch(userId='xxx@domain.com',
sendAsEmail="xxx@domain.com",
body=sendAsConfiguration).execute()
Run Code Online (Sandbox Code Playgroud)
确切的回应是:
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}')
Run Code Online (Sandbox Code Playgroud)
我的场景如下:
我需要它在生产项目中工作,而不是在测试项目中工作。
我已阅读以下问题和答案(以及它们的许多其他变体),但没有任何效果答案 1,答案 2
关于答案 2,我不确定我是否理解这一点,所以如果这是真正的解决方案,那么获得具体步骤会很棒。
我没有添加代码本身,因为它确实可以正常工作(在不同的项目中进行了测试,并且可以正常工作)。请参阅下面的服务帐户设置
G Suite 设置
一开始我在同一个服务帐户下有两个范围,我得到了相同的结果。在上一次测试中,我尝试了每个服务帐户只有一个范围。结果相同
得到这方面的帮助会很棒,
更新 1
更新 2
我比较了成功的项目和没有成功的项目。我注意到的唯一区别是,在工作项目中没有 API 密钥。由于人们写了关于 OAuth 的文章,我想我可以给它一个机会。但由于这是一个生产环境,我不想删除它们,尤其是因为它是由 Google 自动生成的,我不知道它们在哪里使用。我认为它们没有在任何地方使用,但我不确定。
我尝试向工作帐户添加一个 API 密钥,它仍然有效,这给了我更多的动力,使生产设置保持不变。
更新 3
我已经删除了 API 密钥,它没有帮助。
谢谢
我用狂野的委托创建了一个服务帐户。我在代码和 G Suite 帐户中添加了正确的范围。
在 G Suite 管理的“管理 API 客户端访问”页面上添加服务帐户及其范围之前,必须启用“将域范围的权限委派给服务帐户”。否则,它将失败并显示“客户端无权使用此方法检索访问令牌,或客户端未获得任何请求范围的授权”。错误并需要删除 API 客户端并重新添加。
我发现这是服务帐户的角色问题。
这使我能够查询任何域用户的日历事件列表。
归档时间: |
|
查看次数: |
6912 次 |
最近记录: |