Я пытаюсь создать файлы в папке Dropbox.com из приложения GAE.
Я выполнил все шаги, зарегистрировал приложение Dropbox и установил Python SDK из Dropbox локально на моей машине для разработки. (см. dropbox.com API).
Все это прекрасно работает, когда я использую тестовый скрипт cli_client.py в Dropbox SDK на моей локальной машине для доступа к Dropbox - могу «положить» файлы и т. Д.
Теперь я хочу начать работать в среде GAE, поэтому все становится немного сложнее.
Некоторая помощь будет полезна.
Для тех, кто знаком с кодом Dropbox API, у меня были следующие проблемы:
Выпуск 1
Модуль API rest.py Dropbox использует pkg_resources для получения сертификатов, установленных в пакетах сайта для установки на локальном компьютере.
Я заменил
TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
с
TRUSTED_CERT_FILE = file('trusted-certs.crt')
и поместил файл сертификата в мой каталог приложений GAE. Возможно, это не совсем верно; см. мой код ошибки аутентификации ниже.
Выпуск 2
Модуль session.py Dropbox API использует модуль oauth , поэтому я изменил включение на appengine oauth.
Но возникло исключение, что oauth GAE не имеет OAuthConsumer метода, используемого модулем Dropbox session.py. Поэтому я скачал oauth 1.0 и добавил в свое приложение теперь импорт вместо GAE oauth.
Выпуск 3
Модуль GAE ssl, похоже, не имеет свойства CERT_REQUIRED.
Это константа, поэтому я изменил
self.cert_reqs = ssl.CERT_REQUIRED
до
self.cert_reqs = 2
Используется при звонке
ssl.wrap_socket(sock, cert_reqs=self.cert_reqs, ca_certs=self.ca_certs)
Ошибка аутентификации
Но я все еще не могу подключиться к Dropbox:
Status: 401
Reason: Unauthorized
Body: {"error": "Authentication failed"}
Headers: [('date', 'Sun, 19 Feb 2012 15:11:12 GMT'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('content-type', 'application/json'), ('server', 'dbws')]