Я пытаюсь использовать API Admin SDK из App Engine, используя служебную учетную запись с делегированием по всему домену, что позволяет ему выдавать себя за администратора.
Я нашел несколько руководств для этого, но никто не работает, как я ожидаю,
Приведенный ниже код внедрен в стандарт App Engine.
main.py
from flask import Flask
from google.auth import app_engine
import google.auth
try:
import googleclouddebugger
googleclouddebugger.enable()
except ImportError:
pass
SCOPES = ['https://www.googleapis.com/auth/admin.directory.user']
app = Flask(__name__)
@app.route('/')
def hello():
credentials, project = google.auth.default()
appIdentity = app_engine.app_identity
credentials = app_engine.Credentials(scopes=SCOPES)
ret = "Expired:{}".format(credentials.expired)
ret += "\nvalid:{}".format(credentials.valid)
return 'Hello World!\n'+ret
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
app.yaml
runtime: python37
Код credentials = app_engine.Credentials(scopes=SCOPES)
вызовет 500 сообщение об ошибке для приложения, потому что app_engine.app_identity
всегда none
.
"Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/env/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/env/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/env/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/env/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/env/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/srv/main.py", line 52, in hello
credentials = app_engine.Credentials(scopes=SCOPES)
File "/env/lib/python3.7/site-packages/google/auth/app_engine.py", line 107, in __init__
'The App Engine APIs are not available.')
OSError: The App Engine APIs are not available."
Как вы можете видеть отчет об ошибке The App Engine APIs are not available
, но нет API с таким именем впроект GCP.
Ниже всех API, которые я включаю в проект, пытаясь достичь того, о чем он просит.Конечно, ошибка все еще появляется.
Это тестовая среда, если кому-то нужен доступ, просто спросите, я с удовольствием предоставлю вам разрешение зрителя на проект GCP
Спасибо, что уделили время:)