【问题标题】:Google Cloud API: Forbidden to access Enabled API using Service Account keyGoogle Cloud API:禁止使用服务帐户密钥访问已启用的 API
【发布时间】:2016-01-28 20:52:00
【问题描述】:

我在使用服务帐户 P12 密钥时遇到问题并收到 HttpError 403

但是,如果我使用客户端 ID 和机密使用 Web OAuth,我不会遇到此问题。但是,我正在创建服务到服务应用程序。

Google Cloud API JSON 已启用。

import os
from httplib2 import Http
from pprintpp import pprint

from oauth2client.client import SignedJwtAssertionCredentials
from apiclient.discovery import build
from googleapiclient.errors import HttpError

SITE_ROOT = \
    os.path.dirname(os.path.realpath(__file__))
P12_FILE = \
    "REDACTED-0123456789.p12"

P12_PATH = os.path.join(SITE_ROOT, P12_FILE)
pprint(P12_PATH)

SCOPE = \
    'https://www.googleapis.com/auth/devstorage.read_only'
PROJECT_NAME = \
    'mobileapptracking-insights'
BUCKET_NAME = \
    'pubsite_prod_rev_0123456789'
CLIENT_EMAIL = \
    'REDACTED-service@foo-bar-0123456789.iam.gserviceaccount.com'

private_key = None
with open(P12_PATH, "rb") as p12_fp:
  private_key = p12_fp.read()

credentials = SignedJwtAssertionCredentials(
    CLIENT_EMAIL,
    private_key,
    SCOPE)

http_auth = credentials.authorize(Http())

storage = build('storage', version='v1', http=http_auth)

request = storage.objects().list(bucket=BUCKET_NAME)

try:
    response = request.execute()
except HttpError as error:
    print("HttpError: %s" % str(error))
    raise
except Exception as error:
    print("%s: %s" % (error.__class__.__name__, str(error)))
    raise

print(response)

错误信息:

HttpError: <HttpError 403 when requesting https://www.googleapis.com/storage/v1/b/pubsite_prod_rev_0123456789/o?alt=json returned "Forbidden">

我需要做什么来解决这个问题?

【问题讨论】:

    标签: google-cloud-platform google-api-python-client


    【解决方案1】:

    您的代码看起来不错(我刚刚粘贴了它,更改了适当的常量,并成功运行了它)。

    我会仔细检查:

    • 您的客户电子邮件是 p12 密钥的正确电子邮件
    • 该服务帐号可以访问您列出的存储桶

    您可以做一些其他事情来帮助您找出问题所在:

    • 验证您是否可以列出公共uspto-pair 存储桶
    • import httplib2 并设置 httplib2.debuglevel = 1,并验证发出的请求是预期的。

    【讨论】:

      【解决方案2】:

      问题是我没有通过 Google Play 开发者控制台 > 设置 > 用户帐户和权利 为服务的“客户电子邮件”分配访问权限

      【讨论】:

        猜你喜欢
        • 2017-11-17
        • 2014-02-01
        • 2018-10-06
        • 2013-08-30
        • 2019-02-03
        • 2018-09-03
        • 2017-06-26
        • 2016-05-29
        • 1970-01-01
        相关资源
        最近更新 更多