Я смог сделать это, скопировав часть кода RPC из appcfg.py в мое приложение. Я опубликовал эту суть , которая подробно описывает, как это сделать, но я повторю их здесь для потомков.
- Установить клиент Python API . Это даст вам библиотеки OAuth2 и httplib2, необходимые для взаимодействия с RPC-серверами Google из вашего приложения.
- Скопируйте этот файл из GAE SDK, установленного на компьютере разработчика:
google/appengine/tools/appengine_rpc_httplib2.py
в ваше веб-приложение GAE.
- Получите токен обновления, выполнив
appcfg.py list_versions . --oauth2
с вашего локального компьютера. Откроется браузер, чтобы вы могли войти в свою учетную запись Google. Затем вы можете найти refresh_token
в ~ / .appcfg_oauth2_tokens
- Измените и запустите следующий код внутри веб-обработчика:
Наслаждайтесь.
from third_party.google_api_python_client import appengine_rpc_httplib2
# Not-so-secret IDs cribbed from appcfg.py
# https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/appcfg.py#144
APPCFG_CLIENT_ID = '550516889912.apps.googleusercontent.com'
APPCFG_CLIENT_NOTSOSECRET = 'ykPq-0UYfKNprLRjVx1hBBar'
APPCFG_SCOPES = ['https://www.googleapis.com/auth/appengine.admin']
source = (APPCFG_CLIENT_ID,
APPCFG_CLIENT_NOTSOSECRET,
APPCFG_SCOPES,
None)
rpc_server = appengine_rpc_httplib2.HttpRpcServerOauth2(
'appengine.google.com',
# NOTE: Here's there the refresh token is used
"your OAuth2 refresh token goes here",
"appcfg_py/1.8.3 Darwin/12.5.0 Python/2.7.2.final.0",
source,
host_override=None,
save_cookies=False,
auth_tries=1,
account_type='HOSTED_OR_GOOGLE',
secure=True,
ignore_certs=False)
# NOTE: You must insert the correct app_id here, too
response = rpc_server.Send('/api/versions/list', app_id="khan-academy")
# The response is in YAML format
parsed_response = yaml.safe_load(response)
if not parsed_response:
return None
else:
return parsed_response