登录后无法获取Facebook个人资料数据

时间:2015-06-29 04:56:29

标签: android facebook

我使用Facebook SDK允许用户使用Facbook登录,但我无法在成功登录后获取个人资料详细信息。

这是我的代码:

fbLoginButton = (LoginButton) findViewById(R.id.login_button);
    fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Profile profile = Profile.getCurrentProfile();

            id = profile.getId();
            String user_fname = profile.getFirstName();
            String user_lname = profile.getLastName();
            user = user_fname.concat(" ");
            user = user.concat(user_lname);
            image = profile.getProfilePictureUri(10, 10).toString();

            try {
                send();
            }catch (Exception ex) {
                String error = ex.getMessage();
            }
        }

它给出了一个错误,即配置文件obj是null

3 个答案:

答案 0 :(得分:2)

使用 GraphRequest 获取个人资料信息。

@Override
public void onSuccess(LoginResult loginResult) {

    AccessToken accessToken = loginResult.getAccessToken();
    GraphRequest request = GraphRequest.newMeRequest(accessToken,
            new GraphRequest.GraphJSONObjectCallback() {
                String email;
                String firstName;
                String lastName;
                String gender;

                String country;
                String dob, name, picPath, id;

                @Override
                public void onCompleted(JSONObject object,
                        GraphResponse response) {
                    try {

                        email = object.getString("email");
                        name = object.getString("name");
                        firstName = object.getString("first_name");
                        lastName = object.getString("last_name");
                        gender = object.getString("gender");
                        country = object.getString("locale");
                        id = object.getString("id");
                        picPath = "http://graph.facebook.com/" + id + "/picture?type=large";

                        dob = object.getString("birthday");

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

                }
            });
    Bundle parameters = new Bundle();
    parameters
            .putString("fields",
                    "name,email,address,first_name,last_name,gender,location,birthday,locale");

    request.setParameters(parameters);
    request.executeAsync();

}

答案 1 :(得分:0)

检查以下代码并尝试实现此功能,以便在登录时从Facebook检索信息。另外,不要忘记添加所需信息的权限。

private Session.StatusCallback statusCallback = new Session.StatusCallback() {
        @Override
        public void call(final Session session, SessionState state,
                         Exception exception) {
            if (state.isOpened()) {
                Request mRequest = Request.newMeRequest(session, new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser graphUser, Response response) {
                        if (response.getError() == null) {
                            String id= graphUser.getId()));
                            String name= graphUser.getName()));
                            Strign profilePic= "http://graph.facebook.com/" + graphUser.getId() + "/picture"));
                        } else {

                        }
                    }
                });
                RequestAsyncTask asyncTask=mRequest.executeAsync();
            } else if (state.isClosed()) {
            }
        }
    };

这里

答案 2 :(得分:0)

public void RequestData(){
        GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object,GraphResponse response) {

                JSONObject json = response.getJSONObject();
                try {
                    if(json != null){
                        String text = "<b>Name :</b> "+json.getString("name")+"<br><br><b>Email :</b> "+json.getString("email")+"<br><br><b>Profile link :</b> "+json.getString("link");
                        details_txt.setText(Html.fromHtml(text));
                        profile.setProfileId(json.getString("id"));
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,link,email,picture");
        request.setParameters(parameters);
        request.executeAsync();
    }
相关问题