2013-04-15 4 views
4

Я создал учетную запись службы для моей учетной записи [email protected] (приложения Google), и мое приложение работает нормально. Затем я создал учетную запись службы для моего личного счета [email protected], использовать эти новые учетные данные для моего приложения, и теперь, когда я пытаюсь вставить файлы, которые я получаю ошибку 500 со следующим текстом:Google api и учетная запись службы

HttpError 500 при запросе https://www.googleapis.com/upload/drive/v2/files?quotaUser=30&uploadType=resumable&convert=true&ocr=false&alt=json вернулся «Внутренняя ошибка»

Единственное, что изменилось, это учетные данные SERVICE_ACCOUNT_EMAIL и SERVICE_ACCOUNT_PKCS12_FILE_PATH. Я попытался создать еще одну учетную запись службы [email protected], но это не помогает, так что басически мое приложение работает только с первой учетной записью службы. Язык - это python.

+0

Вы используете клиентскую библиотеку API-интерфейсов API Google API? –

+0

В нормальных условиях все, что вам нужно изменить, это адрес электронной почты и закрытый ключ, а 500 не ожидается из-за неправильных учетных данных. –

+0

Да, я использую google-api-python-client. И у меня есть экспоненциальная отсрочка, но в этом случае это не помогает. – Kirill

ответ

0

Хорошо, я не уверен, что произошло, может быть, что-то было зафиксировано после этой аварии http://www.google.com/appsstatus#hl=en&v=issue&ts=1366405199000&iid=369723584758ad9cdfd010ac44c8272e но теперь все работает отлично. Сначала я создал простое небольшое приложение из примеров, которые работают с учетными записями служб. https://gist.github.com/mobedigg/5420958 Я использовал свои учетные данные для этого приложения, и он работает, поэтому я поместил эти учетные данные в свой основной код, и он тоже работает. В основном коде ничего не изменилось, кроме учетных данных. Также я пробовал другие учетные данные в этом маленьком приложении, и они работали с ним и работали с основным кодом. Это очень странно.

+0

нашел полезный ответ здесь: http://stackoverflow.com/questions/23479564/not-able-to-access-google-drive-files-with-service-account – user2290820

0

Если вы создадите учетную запись службы с администратором домена вашего приложения, вы сможете олицетворять всех пользователей, изменив атрибут prn ниже. Если вы не устанавливаете пользователя prn, который находится вне вашего домена, вы должны увидеть ошибку доступа.

f = open('path-to-privatekey.p12') 
key = f.read() 
f.close() 

credentials = SignedJwtAssertionCredentials('[email protected]', key, scope='https://www.googleapis.com/auth/drive', prn='[email protected]') 

http = httplib2.Http() 
credentials.authorize(http) 

client = build('drive', 'v2', http=http) 
+0

Похоже, мы ошибаемся. Мне не нужно выдавать себя за другие аккаунты. Мне нужно изменить учетные записи. У меня есть SERVICE_ACCOUNT_1, созданный для ([email protected]), я хочу использовать SERVICE_ACCOUNT_2, созданный для ([email protected]), в консоли api [email protected] Вот код [https://gist.github.com/mobedigg/5397051](https://gist.github.com/mobedigg/5397051) Я отмечен строкой комментариев в строке, где у меня есть ошибка. – Kirill

+0

Ваш код LGTM и работает для меня. Есть ли что-то, что вы изменили - как файл, который вы загружаете? 500 вряд ли будет вызвано auth. –

+0

Нет. Я меняю только SERVICE_ACCOUNT_EMAIL и SERVICE_ACCOUNT_PKCS12_FILE_PATH. Все остальные вещи одинаковы. – Kirill