Python Google CustomerLicense"未授权访问应用程序ID"

时间:2015-09-26 21:16:07

标签: python licensing google-apps-marketplace

我正在尝试检查用户是否安装了我的市场应用

from oauth2client.client import SignedJwtAssertionCredentials
import json
from httplib2 import Http
from apiclient.discovery import build

fname = 'my-creds.json'
scope = [
    'https://www.googleapis.com/auth/appsmarketplace.license'
]
applicationId='12345678'
customerId='mydomain.com'

json_key = json.load(open(fname))

credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope)

http_auth = credentials.authorize(Http())

appsmarket = build('appsmarket', 'v2', http=http_auth)

response = appsmarket.customerLicense().get(applicationId=applicationId, customerId=customerId).execute()
print response

我在与Google控制台中的应用程序相同的项目中创建了一个服务帐户。

但我一直在

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/appsmarket/v2/customerLicense/471879773528/ashish%40noodletools.com?alt=json returned "Not authorized to access the application ID">

1 个答案:

答案 0 :(得分:-1)

您是否在安全部分向您所在域的授权API客户端添加服务帐户? 在此处查看将域范围的权限委派给服务帐户https://developers.google.com/identity/protocols/OAuth2ServiceAccount

要将域范围的权限委派给服务帐户,Google Apps域的管理员必须完成以下步骤:

  1. 转到您的Google Apps域管理控制台。
  2. 从控件列表中选择安全性。如果您没有看到列出的安全性,请从页面底部的灰色栏中选择更多控件,然后从控件列表中选择安全性。如果您无法看到控件,请确保以域管理员身份登录。
  3. 从选项列表中选择显示更多,然后选择高级设置。
  4. 在“身份验证”部分中选择“管理API客户端访问”。
  5. 在“客户名称”字段中输入服务帐户的客户端ID。
  6. 在“一个或多个API范围”字段中,输入应授予您的应用程序访问权限的范围列表。
  7. 点击授权。
  8. 您的应用程序现在有权以域中的用户身份进行API调用(以及#34;模仿&#34;用户)。当您准备进行授权的API调用时,请指定要模拟的用户。