Я пытаюсь выполнить функцию, предоставляемую одним написанным мной приложением движка приложения (python), которое использует конечные точки, во втором аналогичном приложении движка приложения.
В настоящее время у меня есть оба приложения движка приложений, работающие на apppot с использованием конечных точек с oauth2. У меня есть работающий клиент javascript, который использует конечную точку, выполняет функции с авторизацией и аутентификацией. Итак, я знаю, что внутренние серверы ядра приложения работают и являются правильно открытой конечной точкой. Я также могу просматривать API с помощью проводника API и службы обнаружения.
Поскольку это ссылка между серверами, я думаю, что учетные записи служб — это то, что я хочу использовать для аутентификации oauth2. Поэтому я создал учетную запись службы в клиентском приложении на консоли ядра приложения.
Вот код, который работает на вызывающей стороне:
f = file('key2.pem', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
'my-service-account-email-from-caller-app@developer.gserviceaccount.com',
key,
scope='https://my-app-id.appspot.com/_ah/api/my-api/v1')
http = credentials.authorize(httplib2.Http())
service = build("my-api", "v1", http=http)
Когда я запускаю этот код, я получаю сообщение об ошибке: AccessTokenRefreshError: invalid_grant
Я пробовал много других вещей, добавляя параметр developerKey или discoveryUrl к учетным данным, но все еще недействительный грант. Я посмотрел на других людей, которые видели эту ошибку и пытались возиться с часами, хотя это вызов от сервера к серверу, поэтому я не думаю, что это проблема. Я добавил адрес электронной почты учетной записи службы вызывающего абонента в разрешения вызываемого приложения.
Я не нашел пример приложения или сообщение об использовании учетных записей служб для вызова пользовательского API конечных точек, только для вызова API Google, таких как Youtube или Plus, большинство из которых имеют метод для регистрации вызывающего приложения ядра приложения.
Кто-нибудь смог вызвать функцию API конечной точки в одном приложении движка приложения с другим приложением движка приложения, используя oauth2?
Заранее спасибо, -мат