Как я могу войти в API Google на Android, когда я использую Firebase AuthUI? - PullRequest
0 голосов
/ 13 марта 2020

Итак, я реализовал Firebase Auth & AuthUI и успешно использовал поставщика авторизации Google для входа в систему. Тем не менее, сейчас я пытаюсь получить доступ к API Google, но у меня появляется ошибка входа при попытке доступа к ним. Приведенный ниже код пытается подключиться к Google Fit.

val account = GoogleSignIn.getAccountForExtension(requireContext(), fitnessOptions)
        Fitness.getHistoryClient(requireContext(), account)
                .readDailyTotal(DataType.TYPE_STEP_COUNT_DELTA)
                .addOnSuccessListener { r ->
                    val first = r.dataPoints.first()
                    ...
                }
                .addOnFailureListener { e ->
                    ...
                }

. В этот момент я получаю сообщение об ошибке:

com.google.android.gms.common.api.ApiException: 4: The user must be signed in to make this API call.

Я отладил процесс проверки подлинности Firebase и могу обратите внимание, что в текущем FirebaseUser есть два провайдера: один Google и один Firebase, который похож на то, что вместо аутентификации моего приложения с Google, Firebase сам себя аутентифицирует, а затем аутентифицирует мое приложение с Firebase.

Я Я уверен, что могу удалить AuthUI и вручную выполнить реализацию единого входа Google (согласно документам Google), но я действительно не хочу этого, поскольку я планирую включить почти все провайдеры аутентификации, и я не хочу чтобы все их кодировать вручную (не говоря уже о том, чтобы делать все макеты и т. д. c)

Так что, если кто-нибудь знает, как получить доступ к API Google / зарегистрированному в аккаунте Google от пользователя, авторизованного в Firebase, я ' Буду рад это услышать!

Заранее благодарен за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 13 марта 2020

Хорошо, я понял это. Firebase не передает никаких областей по умолчанию провайдеру входа в Google. Исправил это, выполнив

...
AuthUI.IdpConfig.GoogleBuilder()
    .setScopes(listOf(Scopes.FITNESS_ACTIVITY_READ)
...

для доступа к стандартным шагам чтения информации. Вы можете выяснить, какие области вам нужны здесь и перепроектировать их имя в классе Scopes оттуда.

Надеюсь, это поможет!

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