Это невозможно сделать напрямую, потому что логин Firebase и Google не совпадают, даже если вы вошли в Firebase с учетной записью Google. В то же время на Android имеется только «последний вход в учетную запись Google», доступная для диска пользователя (тот, что на устройстве, который не имеет ничего общего с аутентификацией Firebase, где Google может использоваться только как «Поставщик аутентификации»).
Таким образом, обычно у вас есть два варианта:
Предоставьте сервисному аккаунту GCP доступ к Drive API и используйте Облачные функции, чтобы получить к нему доступ.
Вместо этого используйте Облачное хранилище, которое находится в экосистеме Firebase и похоже на Диск.
Я также мог бы подумать о комбинированном подходе к решению, когда пользователи будут использовать облачное хранилище (вместе с аутентификацией Firebase) и иметь облачную функцию, которая использует учетную запись службы, например. копирует или перемещает загруженные файлы в папку на вашем Диске.
Что касается этого (очевидно, серверного) примера Java, credentials.json
явно намекает на учетную запись службы... и именно отсюда вы можете получить этот файл. Однако для Android это довольно бесполезно, потому что это имеет серьезные последствия для безопасности, чтобы упаковать учетные данные служебной учетной записи в простой для декомпиляции пакет и распространить его в Интернете (для всех). Google Play Store, скорее всего, не позволит вам опубликовать или даже загрузить это, потому что существуют проверки безопасности. В лучшем случае вы можете развернуть этот код только как модуль App Engine, но не как модуль Android.
Извините, что разрушил ваши заблуждения и не смог предоставить готовое решение для 500 воображаемых интернет-точек, которые ничего не платят - но, по крайней мере, я могу сказать, что технически возможно, а что нет - что эффективно может сэкономить вам много времени, пытаясь совершить невозможное.
person
Martin Zeitler
schedule
28.01.2020