我尝试连接到作为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& salt = json返回"访问未配置。之前未被用于项目123456789或已被禁用。访问https://console.developers.google.com/apis/api/helloworldendpoints/overview?project=123456789启用它,然后重试。如果您最近启用了此API,请等待几分钟,以便将操作传播到我们的系统并重试。">
我无法在我的Google Cloud Project中启用API,因为API不存在。
答案 0 :(得分:0)
我发现工作的是黑客。我在同一个项目中使用了一个用户身份验证(而不是服务器)来处理相同的API(https://cloud.google.com/endpoints/docs/frameworks/python/access_from_python)。
我切换回初始服务器身份验证后。方法它开始工作。