在 Google Business Profile API (Google MyBusiness) 上,当我尝试冒充电子邮件地址时收到以下错误:
('unauthorized_client: Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.', {'error': 'unauthorized_client', 'error_description': 'Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.'})
我正在尝试使用使用 Google API 客户端库的 Python 脚本来实现此目的:
file_location = '/some/folder/file.json'
impersonated_email = '[email protected]'
scope = ["https://www.googleapis.com/auth/business.manage"]
credentials = ServiceCredentials.from_service_account_file(file_location, scopes=scope, subject=impersonated_email)
如果我尝试在不使用
subject
参数的情况下访问端点,则它正在工作。但当然,这里的主要目的是模仿。并且 Google 文档 表示可以使用 subject
参数(或通过 with_subject
函数)进行模拟。
顺便说一下,如果我尝试了一些无效的邮件地址,我的错误将更改为:
('invalid_grant: Invalid email or User ID', {'error': 'invalid_grant', 'error_description': 'Invalid email or User ID'})
所以我假设我可以获得用户凭据;但不知道可能出了什么问题。
有人对这个问题有任何想法吗?可能出现什么问题?
好吧,Google 解释 JWT 错误代码如下:
error
字段:unauthorized_client
error_description
字段:客户端无权使用此方法检索访问令牌,或者客户端未获得任何请求范围的授权。
含义:
在管理控制台中使用客户端电子邮件地址而不是客户端 ID(数字)对服务帐户进行授权。
如何解决:
在管理控制台的域范围委派页面中,删除客户端,然后使用数字 ID 重新添加它。
我尝试过,但仍然出现错误。
然后,经过一番挖掘;我看到你只能冒充 G-Suite 帐户。
因此,之后我用另一个真人邮件(即 G-Suite 帐户)尝试了相同的代码,并且成功了。
我也遇到同样的问题,你能帮忙吗?