Использование Dropbox с основными API, но избегая страницы входа

Я хочу использовать Dropbox для своего приложения общего доступа к файлам, используя Core Dropbox API. Я использую OAuth 2.0 API для аутентификации (неявный метод предоставления). Проблема в том, чтобы получить токен доступа, мне нужно войти в аккаунт Dropbox, или он перенаправит меня на страницу входа в Dropbox. Я не хочу, чтобы мои пользователи вводили учетные данные для входа.

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

здесь я рассматриваю одну учетную запись Dropbox, у которой есть все необходимые кредиты.

Благодарю.

4 ответа

Решение

Положив вероятное решение моего собственного вопроса здесь: Основная проблема здесь заключалась в повторном создании токена доступа через определенные промежутки времени, что тоже без какого-либо взаимодействия с пользователем, бэкэнд. Пройдя API-интерфейсы Dropbox, я пришел к выводу, что API-интерфейс для автоматического повторного создания токена доступа не предоставляется. Но Google Drive предлагает Сервисный аккаунт, который не требует взаимодействия с пользователем.

Да, ты можешь это сделать.

Сделайте следующее:

Перейдите на https://www.dropbox.com/developers Нажмите "Консоль приложения". Нажмите "Создать приложение". Выберите "Приложение Dropbox API". Выберите "Файлы и хранилища данных" в качестве типа данных. Ответьте на остальные вопросы с вашими предпочтениями доступа

Вот бит, который вам нужен. После того, как приложение настроено, в консоли приложения нажмите на приложение. На главной странице приложения в разделе OAUTH2 есть кнопка "Создать токен доступа".

Нажмите на эту кнопку, и он сгенерирует маркер доступа с неограниченным сроком действия, который вы можете скопировать / вставить и использовать в своем приложении, чтобы предоставить вам доступ без необходимости выполнять танец аутентификации Oauth2.

Вот пример использования токена доступа с curl для вывода списка файлов в папке (и получения других метаданных).

curl https://api.dropbox.com/1/metadata/dropbox/YourFolder -H "Authorization:Bearer XYZ123"

Где XYZ123 - ваш токен доступа, сгенерированный вами из консоли приложения.

Пока вы включаете Authorization: Bearer в заголовок вашего запроса, вы можете использовать все вызовы API в Core API без необходимости указывать идентификатор приложения, секрет или выполнять танец аутентификации oauth2.

Поскольку вы хотите использовать свою учетную запись Dropbox для хранения файлов, нет причин беспокоить других / ваших пользователей входом в систему: просто получите access_token для вашего клиента обычным способом (который требует , чтобы вы вошли в Dropbox), сохраните его в своем приложении и используйте это access_token в ваших звонках в API Dropbox. Токен доступа Dropbox никогда не истекает в соответствии с окончанием срока действия Dropbox Access Token, так что это должно быть все, что вам нужно.

Как вы, вероятно, видели в основной документации API, Dropbox не предлагает эту функцию.

Вы можете автоматизировать процесс, имитируя взаимодействие пользователя с сайтом. Это можно сделать с помощью модуля запросов. Я разработал решение для моего проекта:

https://github.com/joe42/CloudFusion/blob/master/cloudfusion/store/dropbox/dropbox_store.py

Может быть, это можно сделать проще, используя решение вроде PhantomJS, хотя я не знал об этом в то время.

Другие вопросы по тегам