AccessTokenRefreshError: ошибка invalid_grant при попытке использовать учетную запись службы

Попытка получить доступ к API с потоком служебной учетной записи, но возникла ошибка

AccessTokenRefreshError: недействительный_грант

Что я делаю неправильно?

import httplib2
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials
SERVICE_ACCOUNT_EMAIL = '[email protected]'
SERVICE_ACCOUNT_PKCS12_FILE_PATH = '/mnt/...privatekey.p12'
user_email = '[email protected]'
with file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb') as f:
    key = f.read()
credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, scope=['https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/admin.directory.user', 'https://www.google.com/m8/feeds/', 'https://mail.google.com/'], sub=user_email)
http = credentials.authorize(httplib2.Http())
service = build('oauth2', 'v2', http=http)
user = service.userinfo().get().execute()

Все области предоставляются администратором домена Google при установке приложения Marketplace.


person user1876339    schedule 19.08.2014    source источник
comment
Ваш код выглядит нормально. Я бы еще раз проверил, правильно ли настроены все ключи, адреса электронной почты и области действия.   -  person Eric Koleda    schedule 11.09.2014


Ответы (1)


Предполагая, что вы используете Google App Engine: GAE не поддерживает P12, вам необходимо преобразовать P12 в PEM через OpenSSL. Если вы используете unix, вы можете использовать эти команды:

openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem

Получив новый файл PEM, обязательно удалите все строки (их может быть четыре) перед « -----BEGIN PRIVATE KEY -----». Или, в качестве альтернативы, выполните следующую команду:

openssl pkcs8 -nocrypt -in privatekey.pem -passin pass:notasecret -topk8 -out pk.pem
person Douglas Patterson    schedule 19.08.2014
comment
Спасибо за ответ, но это не помогло, у меня такая же ошибка И нет, мы не используем GAE - person user1876339; 19.08.2014