Google Cloud Endpoints:身份验证问题(错误 403)

Posted

技术标签:

【中文标题】Google Cloud Endpoints:身份验证问题(错误 403)【英文标题】:Google Cloud Endpoints: Authentication issues (error 403) 【发布时间】:2017-07-06 11:07:06 【问题描述】:

我正在尝试连接到作为 Appengine 应用运行的 Google Cloud Endpoints API:

@endpoints.api(name='helloworldendpoints', allowed_client_ids=["1234", "12345"], version='v1', auth_level=endpoints.AUTH_LEVEL.REQUIRED)
class HelloWorldApi(remote.Service):
...

API请求如下:

scopes = ["https://www.googleapis.com/auth/userinfo.email"]
credentials = ServiceAccountCredentials.from_json_keyfile_name("CloudEndpointsClient.json", scopes)

from httplib2 import Http
http_auth = credentials.authorize(Http())

from apiclient.discovery import build

api_root = 'https://myapp.appspot.com/_ah/api'
api = 'helloworldendpoints'
version = 'v1'
discovery_url = '%s/discovery/v1/apis/%s/%s/rest' % (api_root, api, version)
service = build(api, version, discoveryServiceUrl=discovery_url)


response = service.myFunction(myparameter = "123456").execute(http=http_auth)#
print response

如果我删除身份验证要求,请求会很好地工作。 我知道身份验证有效,因为如果在身份验证之后错误会发生变化。

我得到的错误信息是:

googleapiclient.errors.HttpError: https://my-app.appspot.com/_ah/api/helloworldendpoints/v1/obtainScoreFromEmail?myparameter=1234&alt=json 返回“未配置访问。之前未在项目 123456789 中使用或者它已被禁用。通过访问 https://console.developers.google.com/apis/api/helloworldendpoints/overview?project=123456789 启用它,然后重试。如果您最近启用了此 API,请等待几分钟让该操作传播到我们的系统并重试。">

我无法在我的 Google Cloud 项目中启用 API,因为 API 不存在。

【问题讨论】:

当你知道项目不存在,为什么不创建一个? 该项目确实存在。没有API服务要启用。 好的,所以在“Google 控制台 > 库”中,您可以继续启用您打算使用的 api。您找不到哪个特定的 api 这里的问题是它是一个名为 helloworldendpoints 的自定义 Cloud Endpoints API,它在库中不可用。 【参考方案1】:

我发现工作是一个hack。我在同一个项目上使用了用户身份验证(而不是服务器),用于相同的 API(https://cloud.google.com/endpoints/docs/frameworks/python/access_from_python)。

在我切换回初始服务器身份验证后。它开始工作的方法。

【讨论】:

以上是关于Google Cloud Endpoints:身份验证问题(错误 403)的主要内容,如果未能解决你的问题,请参考以下文章

没有 Google 帐户的 Google Cloud Endpoints

Google Cloud Endpoints 的自定义身份验证(而不是 OAuth2)

Google Cloud Endpoints:无法创建新端点 - 权限被拒绝

Google Cloud Endpoints 与另一个 oAuth2 提供程序

Google Cloud Endpoints Security (OAuth2) 和自定义用户架构

具有 Google Cloud Functions 的 Google Cloud Endpoints [关闭]