Я пытаюсь интегрировать API Google в проект (проект Thesis), и у меня есть некоторые сомнения и вопросы. Итак, вот сценарий:
Я написал внутреннее приложение на Java, которое запускается исключительно из командной строки и абсолютно не взаимодействует с пользователем. Его цель — обеспечить связь и взаимодействие между датчиками и исполнительными механизмами. Все отлично работает. Теперь хотелось бы кое-что интегрировать, чтобы датчики бэкапили данные как с определенной периодичностью, так и по определенному пороговому значению. Поэтому я подумал, почему бы не попробовать с Google Диском. Первыми очень полезными ссылками были:
https://developers.google.com/drive/web/quickstart/quickstart-java
https://developers.google.com/accounts/docs/OAuth2InstalledApp
Примеры быстрого запуска работают как шарм. Однако для этого требуется довольно много настроек: создайте проект в консоли разработчика (следовательно, учетную запись), включите Drive API, затем создайте идентификатор клиента и секрет клиента. Выполнив эти шаги, вы можете жестко закодировать идентификатор клиента и секрет, чтобы сформировать URL-адрес запроса для диска Google. Затем вас попросят ввести URL-адрес в браузере, авторизоваться, если это не так, принять и, наконец, скопировать и вставить в консоль код авторизации для получения токена доступа. Вау, довольно безопасный процесс. Но, эй, я полностью согласен с этим, прежде всего в сценарии, когда у нас есть веб-приложение, приложение для смартфона или веб-служба, которая требует аутентификации и авторизации пользователей, чтобы позволить приложению выполнять свою работу путем доступа чужой аккаунт. Но в моем случае я просто хотел бы, чтобы датчики создавали резервные копии данных на моем диске Google.
Эти факты приводят к моему первому вопросу: чтобы использовать API Google (в данном случае Drive), нужно ли мне в любом случае создавать проект? Или есть другой подход? Если я не ошибаюсь, нет других способов создать идентификатор клиента и секрет без создания проекта в консоли разработчика. Это меня очень озадачивает. Почему я должен создавать проект, чтобы использовать в основном некоторые библиотеки?
Итак, давайте примем предыдущее как оправданные ограничения и перейдем к реальному вопросу: как автоматизировать процесс аутентификации? Учитывая мой сценарий, когда датчик (просто модуль Java) хочет сделать резервную копию данных, было бы невозможно выполнить все эти шаги. На странице Google, посвященной OAuth 2.0, есть отличные пояснения о различных сценариях, в которые мы можем внедрить процедуру аутентификации, в том числе для "устройств с ограниченными возможностями ввода". К сожалению, это сложнее, чем другие, и требует, чтобы "Пользователь переключался на устройство или компьютер с более широкими возможностями ввода, запускал браузер, переходил по URL-адресу, указанному на устройстве с ограниченным вводом, входил в систему. и вводит код." (LOL)
Итак, я не сдался и попал в этот пост, в котором рассказывается об OAuth Playground: Как мне авторизовать приложение (веб-приложение или установленное) без вмешательства пользователя? (канонический?). Это действительно похоже на решение для меня, в частности, когда он говорит:
NB2. Этот метод хорошо работает, если вы хотите, чтобы веб-приложение имело доступ к вашей собственной (и только вашей) учетной записи на Диске, не утруждая себя написанием кода авторизации, который будет запускаться только один раз. Просто пропустите шаг 1 и замените "my.drive.app" на свой адрес электронной почты на шаге 5.
Однако, если я не ошибаюсь, я думаю, что OAuth Playground просто помогает тестировать и отлаживать проекты, использующие API Google, не так ли? Более того, классы дисков Google, такие как GoogleAuthorizationCodeFlow и GoogleCredential (используемые в примере быстрого запуска Java), всегда нуждаются в клиенте. ID, Client Secret и так далее, что приводит меня к нулевой точке (создать проект и выполнить всю графическую процедуру).
В заключение: есть ли способ избежать «графического» взаимодействия аутентификации и преобразовать его в автоматизированный процесс, используя только API-интерфейсы Drive без вмешательства пользователя? Спасибо большое, буду благодарен за любую подсказку, подсказку, ответ, указку :-)