问题描述
我在我的 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 的解决方法?
解决方法
我能想到的就是使用反射,尽管我不推荐它,因为在 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 文档。