gpt4 book ai didi

python - 尝试访问许可证 API 时为 "Not authorized to access the application ID"

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:28 25 4
gpt4 key购买 nike

这是当前代码:

SCOPES = [
'https://www.googleapis.com/auth/appsmarketplace.license'
]

def getAppService():
CREDENTIALS_ = appengine.AppAssertionCredentials(scope=SCOPES)
http = httplib2.Http(memcache)
http = CREDENTIALS_.authorize(http)
service = discovery.build(serviceName = 'appsmarket', version='v2', http=http)
return service

def getLicenseNotifications():
service = getAppService()
ret = service.licenseNotification().list(applicationId='THE_PROJECT_ID_NUMBER', timestamp=0, max_results=10).execute()
logging.debug(ret)
return ret

但它收到 403 错误消息“未授权访问应用程序 ID”。此代码是从 GAE 项目作为默认内置服务帐户调用的,在具有与市场应用程序的 manifest.json api_console_project_id 字段完全相同的项目 ID 的同一项目下。

我确实搜索了错误消息,但得到了不相关的信息。

“Google Apps Marketplace API”在开发者控制台中肯定是开启的。

如果我将'v2'替换为'v2sandbox',它似乎超时然后报告后端错误。

有什么帮助吗?

最佳答案

我发现了问题,GAE 默认服务帐户,我猜市场 api 不支持它。如果我创建一个独立的服务帐户并使用 SignedJwtAssertionCredentials 加载它,并使用唯一的许可范围,它就可以工作。因此 merketplace api 不支持 GAE 默认服务帐户。

对于谷歌应用程序安装的应用程序,它已经授予该应用程序作为域的任何用户访问指定范围的权限。但是我们需要在 SignedJwtAssertionCredentials 初始化参数中添加一个“sub=”参数来告诉库我们想要充当哪个域用户。因此,通过这种方式,只要我们知道域的管理员用户,那么我们就可以作为用户访问目录 api,而无需向最终用户弹出任何授权屏幕。默认的 GAE 服务帐户也不支持此功能。

关于python - 尝试访问许可证 API 时为 "Not authorized to access the application ID",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com