3

我正在尝试为我们的组织访问新的 Android 管理 API,但在访问 API 时遇到问题。通过 API 资源管理器访问 API 时一切正常。为了在我们的服务器上运行它,我在 Google 云控制台中创建了一个新项目并在那里创建了一个服务帐户。我下载了密钥并将其用于我机器上的本地测试。但是,在第一次 signupUrl 调用时,我收到 403 错误,指出:“调用者无权管理项目。”。我正在使用的服务帐户具有“项目所有者”角色,我不知道如何赋予它更多权限......

我正在使用的代码:

def initial_enterprise_user(request):
    enterprise_token = request.GET.get('enterpriseToken')
    usr = request.user

    scopes = ['https://www.googleapis.com/auth/androidmanagement']

    credentials = ServiceAccountCredentials.from_json_keyfile_name(settings.SERVICE_ACCOUNT, scopes=scopes)

    if enterprise_token is None:
        androidmanagement = build('androidmanagement', 'v1', credentials=credentials)
        resp = androidmanagement.signupUrls().create(projectId=settings.ANDROID_MGMT_PROJECTID).execute()
        if resp.status_code == 200:
            usr.signup_url_name = resp.json()['name']
            usr.save()
            return render(request, 'initial_login.html', {'response_url': resp.json()['url']})
        else:
            return HttpResponse('Failed to get signup url')
    else:
        # handle token present
4

1 回答 1

4

我在系统中创建了一个新项目,在启用 Android 管理 API 之前创建了服务帐户。服务帐户是在选择“所有者”角色的情况下创建的。这似乎在应用程序中启用了正确的顺序,因为它现在正在工作。以前,我已将 API 添加到项目中,然后创建了我的服务帐户,然后将其链接到 API

于 2017-12-20T09:59:57.643 回答