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

Facebook auth with firebase get User data

我正在尝试对 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"}

我如何获取电子邮件、个人资料图片 URL?

请帮忙。提前致谢。

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