Какой тип потока OAuth я должен использовать для интеграции Google Drive в моем приложении? - PullRequest
1 голос
/ 20 февраля 2020

Я разочарован OAuth-API Google. Мой вариант использования просто не покрывается доступными конечными точками. Я надеюсь, что кто-то со знанием API OAuth Google Drive может посоветовать мне.

Я разрабатываю дополнение для браузера . Это означает, что мое приложение:

  1. Без сервера. Я не хочу поддерживать домен и веб-сервер для этого проекта.
  2. Открытый исходный код, поэтому тривиально извлекать любые секреты, упакованные с кодом, для любого, кто может установить надстройку. Поэтому любая информация, распространяемая с помощью надстройки, должна считаться общедоступной c.

Я хочу добавить интеграцию с Google Drive, чтобы пользователь мог сохранять данные конфигурации приложения на диске для синхронизации c между устройствами (API WebExtensions browser.storage.sync недостаточно, потому что данных слишком много). Мои требования:

  1. Пользователю не нужно входить в Google Диск чаще, чем, скажем, один раз в месяц. Конечно, не ежечасно, или каждый раз, когда они используют надстройку.
  2. Это должно работать на нескольких устройствах для одной и той же учетной записи Google Диска.
  3. Если Алиса разрешает MyApp доступ к alice@google.com, и Ева извлекает идентификатор / секретный идентификатор клиента OAuth или другую информацию из исходного кода MyApp, и у Евы не должно быть доступа к alice@google.com без знания пароля Алисы для Google.

Ни один из потоков, описанных в Сайт Google, кажется, соответствует этим двум требованиям. Я попробовал на стороне сервера , так как думал, что токены refre sh будут соответствовать требованию (1), но кажется, что Google выдает только токен refre sh в первый раз . Я прошу один. После этого я просто получаю токен недолгого (один час) доступа. Таким образом, это нарушает требование (2), поскольку какое бы устройство ни обращалось к Google первым, оно будет единственным с маркером refre sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...