Android - 从Facebook登录获取用户信息时出错

时间:2017-11-15 07:54:22

标签: android facebook-graph-api

在我的应用程序中,我使用facebook登录来访问我的应用程序。我的问题是无法通过facebook登录获取用户信息获取空值 这是我的回调

loginbutton.registerCallback(callback, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            Profile profile = Profile.getCurrentProfile();
            if(profile!=null){
            Log.e("User FirstName", profile.getFirstName());
        } 
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }


    });

否则一切正常。
任何人都可以帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以通过在登录成功时调用异步任务来获取个人资料详细信息

@Override
    public void onSuccess(LoginResult result) {
        fetchProfileDetail(result.getAccessToken());

    }

    public void fetchProfileDetail(final AccessToken fbAccessToken) {
        GraphRequest request = GraphRequest.newMeRequest(fbAccessToken, new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                try {
                    JSONObject jsonObject = response.getJSONObject();
                    String name = jsonObject.optString("first_name");
                    if(!jsonObject.optString("last_name").isEmpty()){
                        name+=" "+jsonObject.optString("last_name");
                    }
                    String fb_id = jsonObject.optString("id");
                    String emailId = jsonObject.optString("email");
                    String profileUrl = "";
                    if (jsonObject.has("picture")) {
                        JSONObject picture = jsonObject.getJSONObject("picture");
                        JSONObject picData = picture.getJSONObject("data");
                        profileUrl = picData.optString("url");
                    }

                } catch (Exception e) {
                    e.printStackTrace();

                }
            }
        });

        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,email,name,first_name,last_name,picture.height(300).width(300)");
        request.setParameters(parameters);
        request.executeAsync();
    }
相关问题