Google Cloud Functions отправляет неверные значения аутентификации из приложения - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть приложение для Android, в котором я обновил профиль пользователя новым DisplayName, но при вызове облачной функции у облачной функции неправильное имя.

Код обновления профиля:

val profileUpdates = UserProfileChangeRequest.Builder()
                        .setDisplayName("Vinay")
                        .setPhotoUri(it)
                        .build()

FirebaseAuth.getInstance().currentUser!!.updateProfile(profileUpdates)
                        .addOnCompleteListener { task ->
                            if (task.isSuccessful) {
                                Log.d("post", "Updated Profile")
                                //Here Code Runs Successfully
                                // then call a cloud functio
                            }
                        }

но в облачных функциях userName: context.auth.token.name дает фактическое отображаемое имя поставщика (VINNUSAURUS) , а не отображаемое имя, которое я изменил перед вызовом любой облачной функции.

1 Ответ

1 голос
/ 28 сентября 2019

context.auth.token содержит информацию о JWT, используемом для аутентификации Firebase, предоставленную клиентом.Это то же самое, что будет доступно в правилах безопасности Firebase.Это не содержит отображаемое имя пользователя.

Отображаемое имя хранится в Firebase Auth, и вы можете получить его в исполнении облачной функции с помощью Firebase Admin SDK.Сначала вам понадобится UID пользователя, отправляющего запрос.UID доступен в context.auth.uid, , но только для вызываемых и триггеров типа База данных реального времени .Если вы пишете какой-то другой вид триггера, вам нужно будет найти другой способ получить UID.

Вызов API, предоставляемый Admin SDK для получения отображаемого имени: getUser ().Возвращает объект UserRecord с отображаемым именем.Вы также можете прочитать больше об этом в документации .

...