【问题标题】:Firebase AuthUI - Fetch additional User Information from Facebook ProviderFirebase AuthUI - 从 Facebook 提供商获取其他用户信息
【发布时间】:2018-05-19 18:41:23
【问题描述】:
我正在尝试从 Firebase AuthUI 的 Facebook 提供商获取请求的信息。
我没有找到任何方法来获取这些数据。当我调试该步骤时,我可以在属性“zzdd”中看到请求的信息,就像 JSON 一样。
我怎样才能得到这些数据?
向用户请求生日和性别信息:
new AuthUI.IdpConfig.FacebookBuilder()
.setPermissions( Arrays.asList( "user_birthday", "user_gender" ) )
.build() );
从提供者获取数据
mUser = FirebaseAuth.getInstance().getCurrentUser();
for( UserInfo user : mUser.getProviderData() ) { }
调试器 - 用户 - zzdd 属性
{"birthday":"08/05/1995","updated_time":"2018-05-04T21:28:53+0000","gender":"male ",...}
Firebase AuthUI 版本:3.3.1
【问题讨论】:
标签:
android
firebase
login
firebase-authentication
facebook-android-sdk
【解决方案1】:
我找到了解决办法。
要通过 Firebase Auth 获取更多信息,您必须通过 SDK 提供商(如 Facebook)获取,代码如下:
使用 Firebase AuthUI 从 Facebook SDK 获取登录成功数据:
GraphRequest request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted( JSONObject jsonObject, GraphResponse response ) {
// Application code
try {
String birthday = jsonObject.getString( "birthday" );
String gender = jsonObject.getString( "gender" );
} catch( JSONException e ) {
e.printStackTrace();
}
}
} );
Bundle parameters = new Bundle();
parameters.putString( "fields", "birthday,gender" );
request.setParameters( parameters );
request.executeAsync();