尝试冒充帐户时出现 unauthorized_client 错误

问题描述 投票:0回答:2

在 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'})

所以我假设我可以获得用户凭据;但不知道可能出了什么问题。

有人对这个问题有任何想法吗?可能出现什么问题?

python google-api authorization google-api-python-client google-my-business-api
2个回答
0
投票

好吧,Google 解释 JWT 错误代码如下:

error
字段:unauthorized_client

error_description
字段:客户端无权使用此方法检索访问令牌,或者客户端未获得任何请求范围的授权。

含义

在管理控制台中使用客户端电子邮件地址而不是客户端 ID(数字)对服务帐户进行授权。

如何解决

在管理控制台的域范围委派页面中,删除客户端,然后使用数字 ID 重新添加它。

我尝试过,但仍然出现错误。

然后,经过一番挖掘;我看到你只能冒充 G-Suite 帐户。

因此,之后我用另一个真人邮件(即 G-Suite 帐户)尝试了相同的代码,并且成功了。


0
投票

我也遇到同样的问题,你能帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.