使用Firebase的Facebook身份验证获取用户数据

时间:2018-07-09 08:55:33

标签: android firebase facebook-graph-api firebase-authentication facebook-login

我正在尝试通过Facebook使用Firebase身份验证。

我已经成功实现了登录部分,并在使用accessToken从Facebook获取用户详细信息时遇到了麻烦。

代码如下:

loginButton.setReadPermissions("email", "public_profile"    );
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(final LoginResult loginResult) {
                Log.d(TAG, "facebook:onSuccess:" + loginResult);
                GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject me, GraphResponse response) {
                                Log.e("FBRESPONSE",me.toString());
                                if (response.getError() != null) {
                                    // handle error
                                } else {
                                    if (me.has("picture")) {
                                        try {
                                            f_photo = me.getJSONObject("picture").getJSONObject("data").getString("url");
                                        } catch (JSONException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                    f_email = me.optString("email");
                                    String id = me.optString("id");
                                    f_name=me.optString("first_name")+" "+me.optString("last_name");;
                                    handleFacebookAccessToken(loginResult.getAccessToken());
                                }
                            }
                        }).executeAsync();
            }
        });

这是我称之为JSON的响应。

E/FBRESPONSE: {"name":"Vishnu Reddy","id":"855235691328214"}

我如何获取电子邮件,个人资料图片网址?

请帮助。预先感谢。

1 个答案:

答案 0 :(得分:1)

您需要使用Facebook Graph API。您需要让用户登录并调用AccessToken.refreshCurrentAccessTokenAsync();并向所需的用户数据字段发起请求。