Kotlin 谷歌云功能正在从应用程序发送错误的身份验证值

Kotlin 谷歌云功能正在从应用程序发送错误的身份验证值,kotlin,firebase-authentication,google-cloud-functions,Kotlin,Firebase Authentication,Google Cloud Functions,我有一个android应用程序,我用新的DisplayName更新了用户配置文件,但当调用云函数时,云函数的名称错误 配置文件更新代码: 但在云函数中,userName:context.auth.token.name给出的是实际的提供者displayname VINNUSAURUS,而不是我在调用任何云函数之前更改的displayname。context.auth.token包含有关客户端提供的Firebase身份验证使用的JWT的信息。这与Firebase安全规则中的内容相同。这不包含用户的显

我有一个android应用程序,我用新的DisplayName更新了用户配置文件,但当调用云函数时,云函数的名称错误

配置文件更新代码:

但在云函数中,userName:context.auth.token.name给出的是实际的提供者displayname VINNUSAURUS,而不是我在调用任何云函数之前更改的displayname。

context.auth.token包含有关客户端提供的Firebase身份验证使用的JWT的信息。这与Firebase安全规则中的内容相同。这不包含用户的显示名称

显示名称由Firebase Auth存储,您可以使用Firebase Admin SDK在云函数执行中获得它。首先,您需要发出请求的用户的UID。UID在context.auth.UID中可用,但仅适用于可调用和实时数据库类型触发器。如果您正在编写其他类型的触发器,则需要找出其他获取UID的方法


AdminSDK提供的获取显示名称的API调用为。它返回具有显示名称的对象。您还可以在.

中了解更多信息,因此我只需要从客户端发送显示名称,如果您愿意,也可以,但请注意,攻击者可能会破坏客户端应用程序并发送错误的值。直接使用Admin SDK查询Firebase Auth将保证获得正确的值。
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
                            }
                        }