Android Firebase 身份验证,无法访问调试中可见的用户 Twitter 数据

问题描述

我在我的 Android 应用上使用 Firebase Twitter 身份验证,注册后我想访问我的 Twitter 用户名和其他数据。

我打电话:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser()

然后在调试时我看到 zze 和 zzi 的内部,我们有我想要访问的字符串内部的数据:

enter image description here

该字符串中的一些数据如下所示:

{
"screen_name": "tom_maks","favourites_count": 2181,"description": "some description","created_at": "Sat Jan 11 08:57:54 +0000 2020","id_str": "some id","profile_link_color": "1DA1F2","is_translation_enabled": false,"translator_type": "none","id": 0,"url": "http://tomasmaks.com/","name": "Tomas Maksimavicius",}

因为我想访问 screen_name,所以我尝试像这样访问这个字符串:

Log.d(TAG,"testing getUserFromProvider: " + user.zze().get(1).zzi());

但似乎数据无法访问,因为 user.zze() 具有不同格式的字符串数据并且 zze().get(1) 不存在。 Firebase 似乎更改了数据的顺序。

你们中有人知道为什么这是 Firebase 的问题吗?甚至有可能以某种方式访问​​我的应用程序上的这串数据吗?

也许有一种使用 Twitter api 的解决方法

解决方法

我能想到的就是使用反射,尽管我不推荐它,因为在 Firebase 项目的每个新版本中,Proguard 都会更改方法/变量的名称。>

参数仅在成功登录结果时可用。

new OnSuccessListener<AuthResult>() {
    @Override
    public void onSuccess(AuthResult result) {
        result.getAdditionalUserInfo().getProfile(); // this will return a map containing specific identity provider user info
    }
}

注意:我没有测试过,因为我没有整个环境,但我的回答是基于 this 文档。