Devil
Devil

Reputation: 344

Fetch Facebook user details in android

I am developed a app in android in which i fetch user details from Facebook. I am able to fetch user name, firstname, lastname but email comes null in some Facebook account. In some Facebook account I found email id and some Facebook account email is null why?

Upvotes: 3

Views: 1704

Answers (1)

Abhishek Agarwal
Abhishek Agarwal

Reputation: 1897

The problem is the email permission this is the working code for getting email id. It is given by me here Unable to access facebook login?

  Session.openActiveSession(this, true, new Session.StatusCallback() {

            // callback when session changes state
            @Override
            public void call(Session session, SessionState state,
                    Exception exception) {
                if (session.isOpened()) {
                    // make request to the /me API

                    List<String> permissions = session.getPermissions();
                    if (!isSubsetOf(PERMISSIONS, permissions)) {
                        pendingPublishReauthorization = true;
                        Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
                                RegisterActivity.this, PERMISSIONS);
                        session.requestNewReadPermissions(newPermissionsRequest);
                        return;
                    }
                    Request.executeMeRequestAsync(session,
                            new Request.GraphUserCallback() {

                        // callback after Graph API response with
                        // user object
                        @Override
                        public void onCompleted(GraphUser user,
                                Response response) {
                            if (user == null) {
                                Toast.makeText(
                                        RegisterActivity.this
                                        .getApplicationContext(),
                                        "Facebook Error",
                                        Toast.LENGTH_LONG).show();

                            } else {
                                Toast.makeText(
                                        RegisterActivity.this
                                        .getApplicationContext(),
                                        user.getName()
                                        + " Logged in Successfully.",
                                        Toast.LENGTH_LONG).show();
                                GraphUser abc = user;

                                id = user.getId();
                                name = user.getName();
                                gender = user.getProperty("gender")
                                        .toString();
                                editname.setText(name);
                                username.setText(user.getUsername());
                                JSONObject jo = user
                                        .getInnerJSONObject();
                                Log.d("Details", jo.toString());
                                try {
                                    emailid.setText(user
                                            .getProperty("email")
                                            .toString());
                                } catch (Exception e1) {
                                    // TODO Auto-generated catch
                                    // block
                                    e1.printStackTrace();
                                }

                                try {
                                    location = user.getLocation()
                                            .getProperty("name")
                                            .toString();
                                } catch (Exception e) {

                                    e.printStackTrace();
                                }



                            }

                            return;
                        }

                    });

                }
            }
        });

Put onActivityResult Method

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

isSubsetoff() Method

   private boolean isSubsetOf(Collection<String> subset,
        Collection<String> superset) {
    for (String string : subset) {
        if (!superset.contains(string)) {
            return false;
        }
    }
    return true;
}

and the permissions as per your need

  private static final List<String> PERMISSIONS = Arrays.asList("email",
        "user_about_me", "user_location");

Upvotes: 4

Related Questions