首页 > 解决方案 > Android Firebase 身份验证,无法访问调试中可见的用户 Twitter 数据

问题描述

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

我打电话:

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

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

在此处输入图像描述

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

{
"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 的解决方法?

标签: javaandroidtwitterfirebase-authenticationtwitter-oauth

解决方案


我能想到的就是使用反射,尽管我不推荐它,因为在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
    }
}

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


推荐阅读