Harry
Harry

Reputation: 379

Can we fetch birth date of user from Android Facebook Sdk?

I need to fetch user's birth day from their FB account. I tried this link : Get Date of Birth and Town/City from Facebook SDK GraphUserCallback

But it not help me much. Please let me know is it possible to fetch birth date, or there are any restriction from FB SDk to access this?

Thanks.

Upvotes: 0

Views: 223

Answers (1)

Dharmendra Pratap Singh
Dharmendra Pratap Singh

Reputation: 1342

First of all you have to specify user_birthday permission while using Facebook SDK and then you can use the below snippet to request for the User Birthday.

Revised code just to give you full demonstration

    public void getBirthDate(){
    // set permissions 
    List<String> permissions = new ArrayList<String>();
    permissions.add("user_birthday");

    Session activeSession = Session.getActiveSession();
    Context context=getApplicationContext();
    if (activeSession == null || activeSession.getState().isClosed()) {
        Session session = new Session.Builder(context).build();
        Session.setActiveSession(session);
        // set active session
        activeSession = session;
    }
    // if a session is already open then issue a request using the available
    // session. Otherwise ask for user credentials.
    if (activeSession.isOpened()) {
        // User Logged In
        Session.getActiveSession().closeAndClearTokenInformation();

        // Open Active Session
        Session.openActiveSession(this, true, new Session.StatusCallback() {
            @Override
            public void call(final Session session, SessionState state, Exception exception) {
                if (session.isOpened()) {
                    Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                        @Override
                        public void onCompleted(GraphUser user, Response response) {
                            if (user != null) {
                                Log.i(LOGTAG, "Json Data that is coming from FB:" + user.getInnerJSONObject());
                            }
                        }
                    });
                }
            }
        });
    } else {
        //If session is not opened 
        OpenRequest openRequest = new Session.OpenRequest((Activity) this);
        openRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
        //Setting no call back dealing it in OnAcitivityResult
        openRequest.setCallback(null);

        //Setting Permission
        openRequest.setPermissions(permissions);
        activeSession.openForRead(openRequest);
    }
}

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

    Session activeSession = Session.getActiveSession();
    if (activeSession == null || activeSession.getState().isClosed()) {
        Session session = new Session.Builder(getApplicationContext()).build();
        Session.setActiveSession(session);
        activeSession = session;
    }

    if (activeSession.isOpened()) {
        Session.openActiveSession(this, true, new Session.StatusCallback() {
            @Override
            public void call(final Session session, SessionState state, Exception exception) {
                if (session.isOpened()) {
                    Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
                        @Override
                        public void onCompleted(GraphUser user, Response response) {
                            if (user != null) {
                                Log.i(LOGTAG, "Json Data that is coming from FB:" + user.getInnerJSONObject());
                            }
                        }
                    });
                }
            }
        });
    }
}

Hope this will help you

The JSON callback would look like

   {
   "id": "146473xxx",
   "name": "XYZ",
   "first_name": "dkajsd",
   "last_name": "kajs",
   "link": "https://....",
   "username": "xxxx",
   "birthday": "12/12/91",
   "hometown": 
   }

Upvotes: 1

Related Questions