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 提供程序